/* * ============================================================================= * VibeQuant (vquant) — AI-Powered Financial Intelligence Platform * ----------------------------------------------------------------------------- * File: client/src/pages/home.tsx * * Author: Simon-Pierre Boucher * Contact: contact@spboucher.ai * Website: https://www.spboucher.ai * Demo: https://www.vquant.ai * License: MIT (see LICENSE) * * Copyright © 2026 Simon-Pierre Boucher. All rights reserved. * ============================================================================= */ import { SearchBar } from "@/components/chat/search-bar"; import { EmptyState } from "@/components/chat/empty-state"; import { StreamingAnswer } from "@/components/streaming-answer"; import { ToolResults } from "@/components/chat/tool-results"; import { AgentSteps } from "@/components/chat/agent-steps"; import { ThinkingWidget } from "@/components/chat/thinking-widget"; import { MonteCarloResults } from "@/components/chat/monte-carlo-results"; import { OptionsPricingCard } from "@/components/financial/options-pricing-card"; import { CustomPythonFigure } from "@/components/chat/custom-python-figure"; import { ResultCard } from "@/components/chat/result-card"; import { SearchingWidget } from "@/components/chat/searching-widget"; import { ErrorState } from "@/components/chat/error-state"; import { ThemeToggle } from "@/components/theme-toggle"; import { ThemeColorPicker } from "@/components/theme-color-picker"; import { ShareButton } from "@/components/chat/share-button"; import { DownloadButtons } from "@/components/chat/download-buttons"; import { ConversationHistory } from "@/components/chat/conversation-history"; import { SessionHistory } from "@/components/chat/session-history"; import { MarketTicker } from "@/components/market-ticker"; import { Sparkles, BookOpen, Plus, Users, User, History, LogOut } from "lucide-react"; import { useLocation } from "wouter"; import { Button } from "@/components/ui/button"; import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/tooltip"; import { Sheet, SheetContent, SheetHeader, SheetTitle, SheetTrigger } from "@/components/ui/sheet"; import { useChatSession } from "@/hooks/useChatSession"; export default function Home() { const [, setLocation] = useLocation(); const { currentUser, handleLogout, currentSessionId, historyOpen, setHistoryOpen, handleLoadSession, conversationHistory, currentQuestion, streamingAnswer, thinkingContent, sources, searchQueries, toolResults, agentSteps, statusMessage, currentSearchIndex, pythonCode, monteCarloResults, optionsPricingResults, customPythonFigures, figureRegistry, figureUrls, resultsRef, chatMutation, hasSearched, handleSearch, handleRetry, handleNewConversation, selectedModel, handleModelChange, } = useChatSession(); return (
{/* Subtle Background */}
{/* Header */}
VQuant
{(conversationHistory.length > 0 || hasSearched) && (

Nouvelle conversation

)}

Showcase Communautaire

Documentation

{currentUser ? ( <>

Mon historique

Mon historique
{currentUser.displayName}

Deconnexion

) : (

Mon compte

)}
{/* Main Content */}
{!hasSearched && } {chatMutation.isError && ( )} {chatMutation.isPending && !streamingAnswer && !chatMutation.isError && } {conversationHistory.length > 0 && } {!chatMutation.isError && (searchQueries.length > 0 || streamingAnswer) && ( <> {streamingAnswer && !chatMutation.isPending && (
)}
{monteCarloResults && (
)} {optionsPricingResults && (
)} {customPythonFigures.length > 0 && (
)} {sources.length > 0 && !chatMutation.isPending && (

Web Results

{sources.map((result, index) => ( ))}
)}
)}
{/* Search Bar - Fixed at bottom */}
); }