import { useState, useEffect, useMemo } from 'react'; import { Link } from 'react-router-dom'; import { Search, Building2 } from 'lucide-react'; import { NIFTY_50_STOCKS } from '../types'; import type { DailyRecommendation } from '../types'; import { DecisionBadge, ConfidenceBadge } from '../components/StockCard'; import { api } from '../services/api'; export default function Stocks() { const [search, setSearch] = useState(''); const [sectorFilter, setSectorFilter] = useState('ALL'); const [recommendation, setRecommendation] = useState(null); useEffect(() => { const fetchData = async () => { try { const rec = await api.getLatestRecommendation(); if (rec && rec.analysis && Object.keys(rec.analysis).length > 0) { setRecommendation(rec); } } catch (err) { console.error('Failed to fetch recommendations:', err); } }; fetchData(); }, []); const sectors = useMemo(() => { const sectorSet = new Set(NIFTY_50_STOCKS.map(s => s.sector).filter(Boolean)); return ['ALL', ...Array.from(sectorSet).sort()]; }, []); const filteredStocks = useMemo(() => { return NIFTY_50_STOCKS.filter(stock => { const matchesSearch = stock.symbol.toLowerCase().includes(search.toLowerCase()) || stock.company_name.toLowerCase().includes(search.toLowerCase()); const matchesSector = sectorFilter === 'ALL' || stock.sector === sectorFilter; return matchesSearch && matchesSector; }); }, [search, sectorFilter]); const getStockAnalysis = (symbol: string) => { return recommendation?.analysis[symbol]; }; return (
{/* Combined Header + Search */}

All Nifty 50 Stocks

{filteredStocks.length} of {NIFTY_50_STOCKS.length} stocks

{/* Search and Filter - inline */}
setSearch(e.target.value)} className="w-full pl-8 pr-3 py-1.5 text-sm rounded-md border border-gray-200 focus:border-nifty-500 focus:ring-1 focus:ring-nifty-500/20 outline-none" />
{/* Compact Stocks Grid */}
{filteredStocks.map((stock) => { const analysis = getStockAnalysis(stock.symbol); return (

{stock.symbol}

{analysis && }

{stock.company_name}

{stock.sector}
{analysis && }
); })}
{filteredStocks.length === 0 && (

No stocks found

Try adjusting your search.

)}
); }