import { useState, useEffect } from "react"; import { Card, CardContent } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; export default function DailyTradingJournal() { const [days, setDays] = useState([]); const [pnl, setPnl] = useState(""); // load from localStorage useEffect(() => { const saved = localStorage.getItem("dailyJournal"); if (saved) setDays(JSON.parse(saved)); }, []); // save to localStorage useEffect(() => { localStorage.setItem("dailyJournal", JSON.stringify(days)); }, [days]); const addDay = () => { if (!pnl) return; const value = parseFloat(pnl); const today = new Date().toLocaleDateString(); setDays([{ date: today, pnl: value }, ...days]); setPnl(""); }; const winDays = days.filter(d => d.pnl > 0).length; const lossDays = days.filter(d => d.pnl < 0).length; const total = days.reduce((a, b) => a + b.pnl, 0); const avg = days.length ? total / days.length : 0; const winRate = days.length ? (winDays / days.length) * 100 : 0; const avgWin = winDays ? days.filter(d => d.pnl > 0).reduce((a, b) => a + b.pnl, 0) / winDays : 0; const avgLoss = lossDays ? days.filter(d => d.pnl < 0).reduce((a, b) => a + b.pnl, 0) / lossDays : 0; return (
Total Days: {days.length}
Win Days: {winDays}
Loss Days: {lossDays}
Win Rate: {winRate.toFixed(2)}%
Total PnL: ${total.toFixed(2)}
Average Day: ${avg.toFixed(2)}
Avg Win: ${avgWin.toFixed(2)}
Avg Loss: ${avgLoss.toFixed(2)}