add login button on homepage

This commit is contained in:
2025-10-18 14:03:58 +02:00
parent 9675f42ffc
commit 08b04b8399

View File

@@ -1,6 +1,6 @@
import React, { useState, useEffect } from 'react'; import React, { useState, useEffect } from 'react';
import { DragDropContext, Droppable, Draggable } from '@hello-pangea/dnd'; import { DragDropContext, Droppable, Draggable } from '@hello-pangea/dnd';
import { useNavigate } from 'react-router-dom'; // ...existing code...
import { motion, AnimatePresence } from 'framer-motion'; import { motion, AnimatePresence } from 'framer-motion';
import { Plus, Settings, TrendingUp, Flame, Calendar, Moon, Sun } from 'lucide-react'; import { Plus, Settings, TrendingUp, Flame, Calendar, Moon, Sun } from 'lucide-react';
import { Button } from '../components/ui/button'; import { Button } from '../components/ui/button';
@@ -10,6 +10,7 @@ import AnimatedCounter from '../components/AnimatedCounter';
import GitActivityGrid from '../components/GitActivityGrid'; import GitActivityGrid from '../components/GitActivityGrid';
import { getGitEnabled } from '../lib/git'; import { getGitEnabled } from '../lib/git';
import { getHabits, updateHabit, syncLocalToRemoteIfNeeded, syncRemoteToLocal, getAuthUser } from '../lib/datastore'; import { getHabits, updateHabit, syncLocalToRemoteIfNeeded, syncRemoteToLocal, getAuthUser } from '../lib/datastore';
import { useNavigate } from 'react-router-dom';
const HomePage = () => { const HomePage = () => {
const navigate = useNavigate(); const navigate = useNavigate();
@@ -84,6 +85,15 @@ const HomePage = () => {
navigate('/add'); navigate('/add');
}; };
const handleLoginSync = () => {
navigate('/login');
};
const handleManualSync = async () => {
await syncLocalToRemoteIfNeeded();
toast({ title: 'Synced!', description: 'Your habits have been synced to the cloud.' });
};
return ( return (
<div className="min-h-screen bg-gradient-to-br from-slate-50 via-white to-slate-50 dark:from-slate-950 dark:via-slate-900 dark:to-slate-950"> <div className="min-h-screen bg-gradient-to-br from-slate-50 via-white to-slate-50 dark:from-slate-950 dark:via-slate-900 dark:to-slate-950">
<div className="max-w-6xl mx-auto px-4 py-6 sm:px-6 lg:px-8"> <div className="max-w-6xl mx-auto px-4 py-6 sm:px-6 lg:px-8">
@@ -123,6 +133,7 @@ const HomePage = () => {
</div> </div>
</motion.div> </motion.div>
{/* Stats Overview */} {/* Stats Overview */}
{habits.length > 0 && ( {habits.length > 0 && (
<motion.div <motion.div
@@ -157,6 +168,8 @@ const HomePage = () => {
</motion.div> </motion.div>
)} )}
{/* Habits List */} {/* Habits List */}
{/* Grouped Habits by Category, collapsible, and uncategorized habits outside */} {/* Grouped Habits by Category, collapsible, and uncategorized habits outside */}
<DragDropContext <DragDropContext
@@ -366,10 +379,35 @@ const HomePage = () => {
<Plus className="w-5 h-5 mr-2" /> <Plus className="w-5 h-5 mr-2" />
Create First Habit Create First Habit
</Button> </Button>
{/* Call to Action for Login/Sync */}
<div className="mb-6 flex flex-col items-center mt-8">
{!loggedIn ? (
<Button
onClick={handleLoginSync}
size="lg"
className="rounded-full shadow-lg bg-emerald-600 text-white hover:bg-emerald-700 transition"
>
<Flame className="w-5 h-5 mr-2" />
Login & Sync My Habits
</Button>
) : (
<Button
onClick={handleManualSync}
size="lg"
className="rounded-full shadow-lg bg-blue-600 text-white hover:bg-blue-700 transition"
>
<Plus className="w-5 h-5 mr-2" />
Sync My Habits Now
</Button>
)}
</div>
</motion.div> </motion.div>
) )
)} )}
{/* Add Button */} {/* Add Button */}
{habits.length > 0 && ( {habits.length > 0 && (
<motion.div <motion.div