Newer
Older
cortex-hub / ui / client-app / src / App.js
import React, { useState } from "react";
import Navbar from "./components/Navbar";
import HomePage from "./pages/HomePage"; // Import the new HomePage
import VoiceChatPage from "./pages/VoiceChatPage";
import LoginPage from "./pages/LoginPage";

const Icon = ({ path, onClick, className }) => (
  <svg
    xmlns="http://www.w3.org/2000/svg"
    viewBox="0 0 24 24"
    fill="none"
    stroke="currentColor"
    strokeWidth="2"
    strokeLinecap="round"
    strokeLinejoin="round"
    className={`w-6 h-6 cursor-pointer transition-colors duration-200 ${className}`}
    onClick={onClick}
  >
    <path d={path} />
  </svg>
);

export default function App() {
  const [currentPage, setCurrentPage] = useState("home");
  const [isSidebarOpen, setIsSidebarOpen] = useState(false);

  const toggleSidebar = () => {
    setIsSidebarOpen(!isSidebarOpen);
  };

  const renderPage = () => {
    switch (currentPage) {
      case "home":
        return <HomePage onNavigate={setCurrentPage} />;
      case "voice-chat":
        return <VoiceChatPage Icon={Icon} />;
      case "login":
        return <LoginPage />;
      default:
        // You can add a 404 or a default page here
        return <HomePage onNavigate={setCurrentPage} />;
    }
  };

  return (
    <div className="flex min-h-screen bg-gray-100 dark:bg-gray-900 font-sans">
      {currentPage !== "login" && (
        <Navbar 
          isOpen={isSidebarOpen} 
          onToggle={toggleSidebar} 
          onNavigate={setCurrentPage} 
          Icon={Icon} 
        />
      )}
      <div className="flex-grow">
        {renderPage()}
      </div>
    </div>
  );
}