// DashboardView Component
// Home dashboard with stats and quick actions
function DashboardView({ token, t, settings, updateSettings, updateMultipleSettings, setActiveTab, setActionParams }) {
const [stats, setStats] = useState(null);
const [loading, setLoading] = useState(true);
const [quickActions, setQuickActions] = useState(() => {
const saved = localStorage.getItem('quickActions');
return saved ? JSON.parse(saved) : [];
});
useEffect(() => {
fetchDashboard();
}, []);
const fetchDashboard = async () => {
try {
const response = await fetch(API_URL + '/dashboard', {
headers: { 'Authorization': `Bearer ${token}` }
});
const data = await response.json();
setStats(data);
} catch (err) {
console.error(err);
} finally {
setLoading(false);
}
};
const removeQuickAction = (toolId) => {
const updated = quickActions.filter(qa => qa.id !== toolId);
setQuickActions(updated);
localStorage.setItem('quickActions', JSON.stringify(updated));
};
if (loading) return
{t('common.loading') || "Loading your dashboard..."}
;
return (
{t('common.welcome') || (stats?.greeting || 'Welcome')}!
{stats?.total_notes || 0}
{t('dashboard.totalNotes')}
{stats?.active_goals || 0}
{t('dashboard.activeGoals')}
{t('dashboard.quickActions')}
{/* Default Quick Actions */}
{/* User-added Tools Quick Actions */}
{quickActions.map(tool => (
{
setActiveTab('tools');
setTimeout(() => {
setActionParams({ openTool: tool.id });
}, 100);
}}
onMouseEnter={(e) => {
e.currentTarget.style.transform = 'translateY(-2px)';
e.currentTarget.style.borderColor = 'var(--primary)';
}}
onMouseLeave={(e) => {
e.currentTarget.style.transform = 'translateY(0)';
e.currentTarget.style.borderColor = 'var(--primary-light)';
}}
>
{/* Remove button */}
{tool.icon}
{tool.name}
))}
);
}
// Export to global scope
window.DashboardView = DashboardView;