From a3d48bf79f5b9e521b602b0227dfe56d771e9c60 Mon Sep 17 00:00:00 2001 From: Kanu Kingsley Date: Sat, 8 Nov 2025 16:55:43 +0100 Subject: [PATCH] feat: refresh interface with modern skill exchange design --- src/App.jsx | 123 +++++++++++++--------- src/pages/CreatePost.jsx | 192 +++++++++++++++++++++++---------- src/pages/HomePage.jsx | 117 +++++++++++++++++++-- src/pages/PostDetails.jsx | 215 ++++++++++++++++++++++--------------- src/pages/PostPage.jsx | 216 +++++++++++++++++++++++++------------- src/styles/tailwind.css | 209 ++++++++++++++++++++++++++++-------- 6 files changed, 757 insertions(+), 315 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 18dbc89..3f855ae 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,5 +1,6 @@ // src/App.jsx import { Routes, Route, Navigate, NavLink } from "react-router-dom"; +import { Fragment } from "react"; import ProtectedRoute from "./auth/ProtectedRoute"; import { useAuth } from "./auth/AuthContext"; @@ -22,71 +23,91 @@ export default function App() { {/* Navbar */} diff --git a/src/pages/CreatePost.jsx b/src/pages/CreatePost.jsx index 4d9520f..32c17e2 100644 --- a/src/pages/CreatePost.jsx +++ b/src/pages/CreatePost.jsx @@ -1,13 +1,17 @@ import { useState } from "react"; +import { useNavigate } from "react-router-dom"; import { usePosts } from "../context/PostContext"; export default function CreatePost({ onCreated }) { const { createPost } = usePosts(); + const navigate = useNavigate(); + const [title, setTitle] = useState(""); const [description, setDescription] = useState(""); const [skillToLearn, setSkillToLearn] = useState(""); const [skillToTeach, setSkillToTeach] = useState(""); const [exchangeCredits, setExchangeCredits] = useState(1); + const [location, setLocation] = useState(""); const [error, setError] = useState(null); const [loading, setLoading] = useState(false); @@ -22,13 +26,15 @@ export default function CreatePost({ onCreated }) { skillToLearn, skillToTeach, exchangeCredits, + location, }); - onCreated?.(newPost); // optional callback to parent - setTitle(""); - setDescription(""); - setSkillToLearn(""); - setSkillToTeach(""); - setExchangeCredits(1); + onCreated?.(newPost); + const targetId = newPost?._id; + if (targetId) { + navigate(`/posts/${targetId}`); + } else { + navigate("/posts"); + } } catch (err) { setError(err.message || "Error creating post"); } finally { @@ -37,54 +43,132 @@ export default function CreatePost({ onCreated }) { }; return ( -
-

Create a New Post

- {error &&

{error}

} - setTitle(e.target.value)} - required - /> -