Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
460 changes: 458 additions & 2 deletions Launch_Radar/package-lock.json

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions Launch_Radar/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
"lucide-react": "^0.577.0",
"react": "^19.2.0",
"react-dom": "^19.2.0",
"react-router-dom": "^7.13.1",
"recharts": "^3.8.0",
"tailwind-merge": "^3.5.0"
},
"devDependencies": {
Expand Down
122 changes: 98 additions & 24 deletions Launch_Radar/src/App.jsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
import React, { useState } from 'react';
import { BrowserRouter as Router, Routes, Route, Navigate, useLocation } from 'react-router-dom';
import { useEffect } from 'react';
import { AppProvider } from './context/AppContext';
import { AnimatePresence, motion } from 'framer-motion';
import Navbar from './components/Navbar';
import Hero from './components/Hero';
import Stats from './components/Stats';
Expand All @@ -7,36 +10,107 @@ import Startups from './components/Startups';
import CTA from './components/CTA';
import Footer from './components/Footer';
import Auth from './components/Auth';
import Dashboard from './components/Dashboard';
import NewReport from './components/NewReport';
import AIPredictions from './components/AIPredictions';
import Brands from './components/Brands';
import BrandIntelligence from './components/BrandIntelligence';
import CreateBrand from './components/CreateBrand';
import BrandDetail from './components/BrandDetail';
import MarketIntelligence from './components/MarketIntelligence';
import SectorReport from './components/SectorReport';
import Store from './components/Store';
import Cart from './components/Cart';
import CheckoutDelivery from './components/CheckoutDelivery';
import CheckoutPayment from './components/CheckoutPayment';
import AdminConsole from './components/AdminConsole';
import AddProduct from './components/AddProduct';
import Settings from './components/Settings';

function App() {
const [view, setView] = useState({ type: 'LANDING', initialAuthMode: 'LOGIN' });

const navigateToAuth = (mode = 'LOGIN') => {
setView({ type: 'AUTH', initialAuthMode: mode });
};
const ScrollToTop = () => {
const { pathname } = useLocation();
useEffect(() => {
window.scrollTo(0, 0);
}, [pathname]);
return null;
};

const navigateToLanding = () => {
setView({ type: 'LANDING' });
};
const PageWrapper = ({ children }) => (
<motion.div
initial={{ opacity: 0, scale: 0.96, y: 15, rotateX: 2 }}
animate={{ opacity: 1, scale: 1, y: 0, rotateX: 0 }}
exit={{ opacity: 0, scale: 1.04, y: -15, rotateX: -2 }}
transition={{
type: "spring",
stiffness: 180,
damping: 25,
mass: 0.8
}}
style={{ transformStyle: "preserve-3d", perspective: 1200 }}
>
{children}
</motion.div>
);

if (view.type === 'AUTH') {
return <Auth initialMode={view.initialAuthMode} onBack={navigateToLanding} />;
}
const LandingPage = () => (
<>
<Navbar />
<Hero />
<Stats />
<Process />
<Startups />
<CTA />
<Footer />
</>
);

function App() {
const location = useLocation();

return (
<div className="app">
<Navbar onAuthOpen={navigateToAuth} />
<main>
<Hero />
<Stats />
<Process />
<Startups />
<CTA onAuthOpen={navigateToAuth} />
</main>
<Footer />
<div className="app overflow-hidden">
<AnimatePresence mode="wait">
<Routes location={location} key={location.pathname}>
{/* Landing Routes */}
<Route path="/" element={<LandingPage />} />

{/* Auth Routes */}
<Route path="/auth" element={<PageWrapper><Auth /></PageWrapper>} />

{/* Dashboard Routes */}
<Route path="/dashboard" element={<PageWrapper><Dashboard /></PageWrapper>} />
<Route path="/report" element={<PageWrapper><NewReport /></PageWrapper>} />
<Route path="/predictions" element={<PageWrapper><AIPredictions /></PageWrapper>} />
<Route path="/brands" element={<PageWrapper><Brands /></PageWrapper>} />
<Route path="/brands/intelligence" element={<PageWrapper><BrandIntelligence /></PageWrapper>} />
<Route path="/brands/new" element={<PageWrapper><CreateBrand /></PageWrapper>} />
<Route path="/brands/neuraledge" element={<PageWrapper><BrandDetail /></PageWrapper>} />
<Route path="/market-intelligence" element={<PageWrapper><MarketIntelligence /></PageWrapper>} />
<Route path="/reports/ai" element={<PageWrapper><SectorReport /></PageWrapper>} />
<Route path="/store" element={<PageWrapper><Store /></PageWrapper>} />
<Route path="/cart" element={<PageWrapper><Cart /></PageWrapper>} />
<Route path="/checkout/delivery" element={<PageWrapper><CheckoutDelivery /></PageWrapper>} />
<Route path="/checkout/payment" element={<PageWrapper><CheckoutPayment /></PageWrapper>} />
<Route path="/admin" element={<PageWrapper><AdminConsole /></PageWrapper>} />
<Route path="/admin/products/new" element={<PageWrapper><AddProduct /></PageWrapper>} />
<Route path="/settings" element={<PageWrapper><Settings /></PageWrapper>} />

{/* Catch all redirect */}
<Route path="*" element={<Navigate to="/" replace />} />
</Routes>
</AnimatePresence>
</div>
);
}

export default App;
const AppWrapper = () => (
<AppProvider>
<Router>
<ScrollToTop />
<App />
</Router>
</AppProvider>
);

export default AppWrapper;

Loading