Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
96 changes: 29 additions & 67 deletions src/App.jsx
Original file line number Diff line number Diff line change
@@ -1,72 +1,34 @@
import { useState } from 'react';
import './App.css';
import React, { useState, useEffect, createContext } from 'react'
import { Routes, Route } from 'react-router-dom'
import Home from './pages/Home'
import TasksPage from './pages/Tasks'
import ApiPage from './pages/ApiPage'
import Navbar from './components/Navbar'
import Footer from './components/Footer'

// Import your components here
// import Button from './components/Button';
// import Navbar from './components/Navbar';
// import Footer from './components/Footer';
// import TaskManager from './components/TaskManager';
export const ThemeContext = createContext()

function App() {
const [count, setCount] = useState(0);
export default function App() {
const [theme, setTheme] = useState(() => localStorage.getItem('theme') || 'light')

return (
<div className="min-h-screen bg-gray-100 dark:bg-gray-900 text-gray-900 dark:text-gray-100">
{/* Navbar component will go here */}
<header className="bg-white dark:bg-gray-800 shadow">
<div className="max-w-7xl mx-auto py-6 px-4 sm:px-6 lg:px-8">
<h1 className="text-3xl font-bold">PLP Task Manager</h1>
</div>
</header>

<main className="max-w-7xl mx-auto py-6 px-4 sm:px-6 lg:px-8">
<div className="bg-white dark:bg-gray-800 overflow-hidden shadow rounded-lg p-6">
<div className="flex flex-col items-center justify-center">
<p className="text-lg mb-4">
Edit <code className="font-mono bg-gray-200 dark:bg-gray-700 p-1 rounded">src/App.jsx</code> and save to test HMR
</p>

<div className="flex items-center gap-4 my-4">
<button
onClick={() => setCount((count) => count - 1)}
className="px-4 py-2 bg-red-500 text-white rounded hover:bg-red-600 transition-colors"
>
-
</button>
<span className="text-xl font-bold">{count}</span>
<button
onClick={() => setCount((count) => count + 1)}
className="px-4 py-2 bg-green-500 text-white rounded hover:bg-green-600 transition-colors"
>
+
</button>
</div>

<p className="text-gray-500 dark:text-gray-400 mt-4">
Implement your TaskManager component here
</p>
</div>
</div>

{/* API data display will go here */}
<div className="mt-8 bg-white dark:bg-gray-800 overflow-hidden shadow rounded-lg p-6">
<h2 className="text-2xl font-bold mb-4">API Data</h2>
<p className="text-gray-500 dark:text-gray-400">
Fetch and display data from an API here
</p>
</div>
</main>
useEffect(() => {
document.documentElement.classList.toggle('dark', theme === 'dark')
localStorage.setItem('theme', theme)
}, [theme])

{/* Footer component will go here */}
<footer className="bg-white dark:bg-gray-800 shadow mt-auto">
<div className="max-w-7xl mx-auto py-6 px-4 sm:px-6 lg:px-8">
<p className="text-center text-gray-500 dark:text-gray-400">
© {new Date().getFullYear()} PLP Task Manager. All rights reserved.
</p>
</div>
</footer>
</div>
);
return (
<ThemeContext.Provider value={{ theme, setTheme }}>
<div className="min-h-screen flex flex-col bg-gray-50 dark:bg-gray-900 text-gray-900 dark:text-gray-100">
<Navbar />
<main className="flex-1 container mx-auto px-4 py-6">
<Routes>
<Route path="/" element={<Home />} />
<Route path="/tasks" element={<TasksPage />} />
<Route path="/api" element={<ApiPage />} />
</Routes>
</main>
<Footer />
</div>
</ThemeContext.Provider>
)
}

export default App;