diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index d9f26601a123..16b44d7f6422 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -1,10 +1,29 @@ import React, { useState } from "react"; import "./App.css"; +import CogTooth from "./assets/cog-tooth"; import ChatInterface from "./components/ChatInterface"; import Errors from "./components/Errors"; import SettingModal from "./components/SettingModal"; +import Terminal from "./components/Terminal"; import Workspace from "./components/Workspace"; +interface Props { + setSettingOpen: (isOpen: boolean) => void; +} + +function LeftNav({ setSettingOpen }: Props): JSX.Element { + return ( +
+
setSettingOpen(true)} + > + +
+
+ ); +} + function App(): JSX.Element { const [settingOpen, setSettingOpen] = useState(false); @@ -14,15 +33,22 @@ function App(): JSX.Element { return (
- -
- + +
+
+
+ +
+
+ +
+
+
+ +
-
- -
- +
); } diff --git a/frontend/src/components/ChatInterface.tsx b/frontend/src/components/ChatInterface.tsx index b27b79fa9b82..1a16a8eac4b7 100644 --- a/frontend/src/components/ChatInterface.tsx +++ b/frontend/src/components/ChatInterface.tsx @@ -1,21 +1,20 @@ import { Card, CardBody } from "@nextui-org/react"; import React, { useEffect, useRef } from "react"; -import { useSelector } from "react-redux"; import { useTranslation } from "react-i18next"; +import { useSelector } from "react-redux"; import assistantAvatar from "../assets/assistant-avatar.png"; -import CogTooth from "../assets/cog-tooth"; import userAvatar from "../assets/user-avatar.png"; import { useTypingEffect } from "../hooks/useTypingEffect"; +import { I18nKey } from "../i18n/declaration"; import { + addAssistantMessageToChat, setCurrentQueueMarkerState, setCurrentTypingMsgState, setTypingAcitve, - addAssistantMessageToChat, } from "../services/chatService"; -import { RootState } from "../store"; import { Message } from "../state/chatSlice"; +import { RootState } from "../store"; import Input from "./Input"; -import { I18nKey } from "../i18n/declaration"; interface IChatBubbleProps { msg: Message; @@ -185,24 +184,12 @@ function InitializingStatus(): JSX.Element { ); } -interface Props { - setSettingOpen: (isOpen: boolean) => void; -} - -function ChatInterface({ setSettingOpen }: Props): JSX.Element { +function ChatInterface(): JSX.Element { const { initialized } = useSelector((state: RootState) => state.task); return ( -
-
-
-
setSettingOpen(true)} - > - -
-
+
+
Chat
{initialized ? : }
diff --git a/frontend/src/components/Terminal.tsx b/frontend/src/components/Terminal.tsx index bf74f2b79e9d..0e121b3370c9 100644 --- a/frontend/src/components/Terminal.tsx +++ b/frontend/src/components/Terminal.tsx @@ -1,7 +1,7 @@ -import React, { useEffect, useRef } from "react"; import { IDisposable, Terminal as XtermTerminal } from "@xterm/xterm"; -import { FitAddon } from "xterm-addon-fit"; import "@xterm/xterm/css/xterm.css"; +import React, { useEffect, useRef } from "react"; +import { FitAddon } from "xterm-addon-fit"; import socket from "../socket/socket"; class JsonWebsocketAddon { @@ -88,7 +88,14 @@ function Terminal(): JSX.Element { }; }, []); - return
; + return ( +
+
Terminal
+
+
+
+
+ ); } export default Terminal; diff --git a/frontend/src/components/Workspace.tsx b/frontend/src/components/Workspace.tsx index 3c731e5eda48..8eedea7f3cac 100644 --- a/frontend/src/components/Workspace.tsx +++ b/frontend/src/components/Workspace.tsx @@ -1,28 +1,21 @@ -import React, { useMemo, useState } from "react"; import { Tab, Tabs } from "@nextui-org/react"; +import React, { useMemo, useState } from "react"; import { useTranslation } from "react-i18next"; -import Terminal from "./Terminal"; -import Planner from "./Planner"; -import CodeEditor from "./CodeEditor"; -import Browser from "./Browser"; -import { TabType, TabOption, AllTabs } from "../types/TabOption"; -import CmdLine from "../assets/cmd-line"; import Calendar from "../assets/calendar"; import Earth from "../assets/earth"; import Pencil from "../assets/pencil"; import { I18nKey } from "../i18n/declaration"; +import { AllTabs, TabOption, TabType } from "../types/TabOption"; +import Browser from "./Browser"; +import CodeEditor from "./CodeEditor"; +import Planner from "./Planner"; function Workspace() { const { t } = useTranslation(); - const [activeTab, setActiveTab] = useState(TabOption.TERMINAL); + const [activeTab, setActiveTab] = useState(TabOption.CODE); const tabData = useMemo( () => ({ - [TabOption.TERMINAL]: { - name: t(I18nKey.WORKSPACE$TERMINAL_TAB_LABEL), - icon: , - component: , - }, [TabOption.PLANNER]: { name: t(I18nKey.WORKSPACE$PLANNER_TAB_LABEL), icon: , @@ -44,12 +37,12 @@ function Workspace() { return ( <> -
- {t(I18nKey.WORKSPACE$TITLE)} -
-
+
{ setActiveTab(v as TabType); diff --git a/frontend/src/index.css b/frontend/src/index.css index 03eb3bcc0434..af4d87791d31 100644 --- a/frontend/src/index.css +++ b/frontend/src/index.css @@ -1,22 +1,22 @@ :root { - --bg-dark: #1e1e1e; + --bg-dark: #0c0e10; --bg-light: #292929; --bg-input: #393939; - --bg-workspace: #171717; + --bg-workspace: #1f2228; + --border: #3c3c4a; background-color: var(--bg-dark) !important; } - body { margin: 0; - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', - 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", + "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } code { - font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', + font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace; } diff --git a/frontend/src/types/TabOption.tsx b/frontend/src/types/TabOption.tsx index ea1d29a91141..a630b559cd4f 100644 --- a/frontend/src/types/TabOption.tsx +++ b/frontend/src/types/TabOption.tsx @@ -1,21 +1,11 @@ enum TabOption { - TERMINAL = "terminal", PLANNER = "planner", CODE = "code", BROWSER = "browser", } -type TabType = - | TabOption.TERMINAL - | TabOption.PLANNER - | TabOption.CODE - | TabOption.BROWSER; +type TabType = TabOption.PLANNER | TabOption.CODE | TabOption.BROWSER; -const AllTabs = [ - TabOption.TERMINAL, - TabOption.PLANNER, - TabOption.CODE, - TabOption.BROWSER, -]; +const AllTabs = [TabOption.PLANNER, TabOption.CODE, TabOption.BROWSER]; export { AllTabs, TabOption, type TabType }; diff --git a/frontend/tailwind.config.js b/frontend/tailwind.config.js index 431c9e6094ba..50f185fc2862 100644 --- a/frontend/tailwind.config.js +++ b/frontend/tailwind.config.js @@ -1,23 +1,25 @@ /** @type {import('tailwindcss').Config} */ -const {nextui} = require("@nextui-org/react"); +const { nextui } = require("@nextui-org/react"); export default { content: [ - './src/**/*.{js,ts,jsx,tsx}', - "./node_modules/@nextui-org/theme/dist/**/*.{js,ts,jsx,tsx}" + "./src/**/*.{js,ts,jsx,tsx}", + "./node_modules/@nextui-org/theme/dist/**/*.{js,ts,jsx,tsx}", ], theme: { extend: { colors: { - 'bg-dark': 'var(--bg-dark)', - 'bg-light': 'var(--bg-light)', - 'bg-input': 'var(--bg-input)', - 'bg-workspace': 'var(--bg-workspace)' + "bg-dark": "var(--bg-dark)", + "bg-light": "var(--bg-light)", + "bg-input": "var(--bg-input)", + "bg-workspace": "var(--bg-workspace)", + border: "var(--border)", }, }, }, darkMode: "class", - plugins: [nextui({ - defaultTheme: "dark" - })], -} - + plugins: [ + nextui({ + defaultTheme: "dark", + }), + ], +};