"use client" import { useState } from "react" import { Button } from "@/components/ui/button" import { Plus, Settings } from "lucide-react" interface WatchlistProps { onSelectStock: (symbol: string) => void } export function Watchlist({ onSelectStock }: WatchlistProps) { const [activeTab, setActiveTab] = useState("active") const watchlistStocks = [ { symbol: "MSFT", exchange: "NASDAQ", name: "Microsoft Corporation", price: 507.03, changePercent: -0.61, logo: "https://logo.clearbit.com/microsoft.com", bgColor: "bg-orange-500", }, { symbol: "GOOG", exchange: "NASDAQ", name: "Alphabet Inc.", price: 246.57, changePercent: -0.51, logo: "https://logo.clearbit.com/google.com", bgColor: "bg-blue-500", }, { symbol: "AMZN", exchange: "NASDAQ", name: "Amazon.com, Inc.", price: 218.15, changePercent: -0.94, logo: "https://logo.clearbit.com/amazon.com", bgColor: "bg-orange-600", }, { symbol: "META", exchange: "NASDAQ", name: "Meta Platforms, Inc.", price: 748.91, changePercent: -1.54, logo: "https://logo.clearbit.com/meta.com", bgColor: "bg-blue-600", }, ] const activeStocks = [ { symbol: "OPEN", exchange: "NASDAQ", name: "Opendoor Technologies...", price: 9.09, changePercent: 10.45, logo: "https://logo.clearbit.com/opendoor.com", bgColor: "bg-purple-600", }, { symbol: "INTC", exchange: "NASDAQ", name: "Intel Corporation", price: 33.99, changePercent: 8.87, logo: "https://logo.clearbit.com/intel.com", bgColor: "bg-blue-700", }, { symbol: "SNAP", exchange: "NYSE", name: "Snap Inc.", price: 8.33, changePercent: 1.34, logo: "https://logo.clearbit.com/snap.com", bgColor: "bg-yellow-500", }, { symbol: "SOXS", exchange: "AMEX", name: "Direxion Daily Semicond...", price: 5.34, changePercent: 1.14, logo: "", bgColor: "bg-gray-600", letter: "S", }, ] const peersStocks = [ { symbol: "TM", exchange: "NYSE", name: "Toyota Motor Corporation", price: 197.28, changePercent: -0.41, logo: "https://logo.clearbit.com/toyota.com", bgColor: "bg-red-600", }, { symbol: "BYDDY", exchange: "OTC", name: "BYD Company Limited", price: 13.8, changePercent: 2.53, logo: "", bgColor: "bg-gray-700", letter: "B", }, { symbol: "GM", exchange: "NYSE", name: "General Motors Comp...", price: 60.59, changePercent: 0, logo: "https://logo.clearbit.com/gm.com", bgColor: "bg-blue-800", }, ] const getCurrentStocks = () => { switch (activeTab) { case "gainers": return activeStocks.filter((stock) => stock.changePercent > 0) case "losers": return watchlistStocks // All are negative in the watchlist case "active": default: return activeStocks } } const StockItem = ({ stock }: { stock: any }) => { const isPositive = stock.changePercent > 0 return (
onSelectStock(stock.symbol)} >
{stock.logo ? ( {stock.symbol} ) : ( {stock.letter || stock.symbol[0]} )}
{stock.name}
{stock.symbol} · {stock.exchange}
US${stock.price.toFixed(2)}
) } const StockItemWithChange = ({ stock }: { stock: any }) => { const isPositive = stock.changePercent > 0 return (
onSelectStock(stock.symbol)} >
{stock.logo ? ( {stock.symbol} ) : ( {stock.letter || stock.symbol[0]} )}
{stock.name}
{stock.symbol} · {stock.exchange}
US${stock.price.toFixed(2)}
{isPositive ? "+" : ""} {stock.changePercent.toFixed(2)}%
) } return (

Create Watchlist

{watchlistStocks.map((stock) => ( ))}
{["Gainers", "Losers", "Active"].map((tab) => ( ))}
{getCurrentStocks().map((stock) => ( ))}

Peers

{peersStocks.map((stock) => ( ))}
) }