import React, { useState, useEffect } from "react"; import { BrowserRouter as Router, Routes, Route, useNavigate } from "react-router-dom"; import axios from "axios"; import Chart from "./components/Chart"; import Scanner from "./components/Scanner"; import Ribbon from "./components/Ribbon"; import SmartMoney from "./components/SmartMoney"; import Popup from "./components/Popup"; import AboutScanner from "./components/AboutScanner"; import MarketIntel from "./components/MarketIntel"; import TrendScanner from "./components/TrendScanner"; import WatchlistManager from "./components/WatchlistManager"; import Login from "./components/Login"; import Signup from "./components/Signup"; import ProtectedRoute from "./components/ProtectedRoute"; import Profile from "./components/Profile"; import MainDashboard from "./components/MainDashboard"; import "./index.css"; function Dashboard() { const [selectedStock, setSelectedStock] = useState("NSE:RELIANCE"); const [signal, setSignal] = useState(null); const [view, setView] = useState("dashboard"); const [userProfile, setUserProfile] = useState(null); const [dropdownOpen, setDropdownOpen] = useState(false); const [scannerLoaded, setScannerLoaded] = useState(false); const [buyModalData, setBuyModalData] = useState(null); const [buyQuantity, setBuyQuantity] = useState(1); const navigate = useNavigate(); const fetchProfile = () => { axios.get("/api/auth/me") .then(res => setUserProfile(res.data)) .catch(err => { if (err.response?.status === 401) handleLogout(); }); }; useEffect(() => { fetchProfile(); }, []); const handleLogout = () => { localStorage.removeItem("token"); navigate("/login"); }; const handleBuySubmit = async () => { if (!buyModalData || buyQuantity < 1) return; try { await axios.post("/api/portfolio/buy", { symbol: buyModalData.symbol, quantity: buyQuantity, buy_price: buyModalData.price }); setBuyModalData(null); setBuyQuantity(1); } catch (err) { console.error("Error buying stock:", err); alert("Failed to buy stock"); } }; const onBuyClick = (symbol, price) => { setBuyModalData({ symbol, price }); setBuyQuantity(1); }; return (
{/* HEADER */}
{/* Logo only, no text */} 📊
{userProfile && (
setDropdownOpen(!dropdownOpen)} >
{userProfile.display_name ? userProfile.display_name.charAt(0).toUpperCase() : '?'}
{userProfile.display_name || userProfile.username}
{dropdownOpen && (
)}
)}
{view === "scanner" && ( <>

TradingView Chart

{signal && } )} {view === "dashboard" && } {view === "ribbon" && } {view === "smartmoney" && } {view === "marketintel" && } {view === "trend" && } {view === "watchlists" && } {view === "profile" && }
{/* Buy Modal */} {buyModalData && (

Mock Buy

{buyModalData.symbol}

Current Price: ₹{buyModalData.price}

setBuyQuantity(parseInt(e.target.value) || 1)} min="1" style={{ background: 'var(--search-bg)', border: '1px solid var(--border-color)', color: 'var(--text-color)', padding: '10px', borderRadius: '8px', width: '100px', fontSize: '1.1rem', textAlign: 'center' }} />
Total Investment

₹{(buyModalData.price * buyQuantity).toFixed(2)}

)}
); } function App() { return ( } /> } /> } /> ); } export default App;