diff --git a/frontend/src/App.css b/frontend/src/App.css
index c6f1bbc..45e1e1b 100644
--- a/frontend/src/App.css
+++ b/frontend/src/App.css
@@ -121,8 +121,9 @@ body {
.container-page.with-rounded-border {
border-top-left-radius: 50px;
border-top-right-radius: 50px;
- padding-top: 70px;
+ padding-top: 10px;
margin-top: -170px;
+ margin-bottom: 100px;
}
#sign.container-page.with-rounded-border,
diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx
index ed62ce5..5eedbee 100644
--- a/frontend/src/App.jsx
+++ b/frontend/src/App.jsx
@@ -1,5 +1,6 @@
import { Outlet } from "react-router-dom";
import Navbar from "./components/NavBar/NavBar";
+import Footer from "./components/Footer/Footer";
import "./App.css";
function App() {
@@ -7,6 +8,7 @@ function App() {
<>
+
>
);
}
diff --git a/frontend/src/components/CardModel/card-model.css b/frontend/src/components/CardModel/card-model.css
index c7accca..91c7df3 100644
--- a/frontend/src/components/CardModel/card-model.css
+++ b/frontend/src/components/CardModel/card-model.css
@@ -3,7 +3,7 @@
padding: 30px;
border-radius: 6px;
box-shadow: 5px 5px 15px 8px rgba(217, 217, 217, 0.53);
- margin: 20px 0;
+ margin: 30px 0;
overflow: hidden;
}
diff --git a/frontend/src/components/Dashboards/RowDash2.jsx b/frontend/src/components/Dashboards/RowDash2.jsx
index f9fa0d2..91babef 100644
--- a/frontend/src/components/Dashboards/RowDash2.jsx
+++ b/frontend/src/components/Dashboards/RowDash2.jsx
@@ -1,11 +1,11 @@
import React, { useState, useEffect } from "react";
import "./RowDash.css";
import { useGlobalContext } from "../../contexts/GlobalContext";
-import { useAdminContext } from "../../contexts/AdminContext";
+// import { useAdminContext } from "../../contexts/AdminContext";
function RowDash2() {
const { apiService } = useGlobalContext();
- const { goToEditUser } = useAdminContext();
+ // const { goToEditUser } = useAdminContext();
const [users, setUsers] = useState([]);
const fetchUsers = async () => {
@@ -48,14 +48,14 @@ function RowDash2() {
{user.email}
{user.is_admin}
-
goToEditUser(user.id)}
className="invisible-button"
>
-
+ */}
+
+
+ );
+}
diff --git a/frontend/src/components/Footer/footer.css b/frontend/src/components/Footer/footer.css
new file mode 100644
index 0000000..e69de29
diff --git a/frontend/src/components/Headers/HeaderLongUser.jsx b/frontend/src/components/Headers/HeaderLongUser.jsx
index fcd718e..0701c78 100644
--- a/frontend/src/components/Headers/HeaderLongUser.jsx
+++ b/frontend/src/components/Headers/HeaderLongUser.jsx
@@ -1,10 +1,9 @@
import "./header.css";
import { useState } from "react";
-import PropTypes from "prop-types";
import Unknow from "../../assets/no-profile.jpg";
import { useGlobalContext } from "../../contexts/GlobalContext";
-function HeaderLongUser({ textTitle, textTitle2 }) {
+function HeaderLongUser() {
const [file, setFile] = useState();
const { apiService, setUser, user } = useGlobalContext();
@@ -45,28 +44,26 @@ function HeaderLongUser({ textTitle, textTitle2 }) {
alt=""
/>
-
-
- {textTitle} {textTitle2}
-
+
+
+
+ Modifier votre profil
);
}
-HeaderLongUser.propTypes = {
- textTitle: PropTypes.string,
- textTitle2: PropTypes.string,
-};
-HeaderLongUser.defaultProps = {
- textTitle: "Titre par défaut",
- textTitle2: "Titre 2 par défaut",
-};
export default HeaderLongUser;
diff --git a/frontend/src/components/Headers/header.css b/frontend/src/components/Headers/header.css
index fcaedfd..8a8526c 100644
--- a/frontend/src/components/Headers/header.css
+++ b/frontend/src/components/Headers/header.css
@@ -3,7 +3,7 @@
background-color: var(--main-color);
padding-bottom: 40px;
margin-top: -50px;
- padding-top: 80px;
+ padding-top: 50px;
}
.edit-profile-btn {
@@ -39,8 +39,7 @@
.header .header-content h1 {
font-weight: 500;
- margin-left: 30px;
- margin-right: 30px;
+ margin-bottom: 180px;
}
.header .header-content h2 {
@@ -63,11 +62,35 @@
}
.header .profile-img-container img {
- width: 100%;
+ width: 100px;
height: auto;
border-radius: 50%;
}
+.input-img {
+ display: none;
+}
+.form-img {
+ display: flex;
+ width: 100%;
+ flex-direction: row;
+ justify-content: center;
+ padding: 20px 0;
+}
+.label-file {
+ cursor: pointer;
+ color: black;
+ background-color: white;
+ padding: 7px 12px;
+ border-radius: 50px;
+}
+
+.yooo {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ gap: 30px;
+}
.header .header-content.user button {
margin-top: -15px;
background-color: white;
@@ -100,4 +123,8 @@
.edit-profile-btn {
margin-top: -200px;
}
+
+ .header .header-content h1 {
+ margin: 80px 0 130px 0;
+ }
}
diff --git a/frontend/src/components/HomeCard/HomeCard.css b/frontend/src/components/HomeCard/HomeCard.css
new file mode 100644
index 0000000..f9d9c3f
--- /dev/null
+++ b/frontend/src/components/HomeCard/HomeCard.css
@@ -0,0 +1,50 @@
+.big-homeCard-container {
+ padding: 60px 0;
+}
+.big-homeCard-container span {
+ color: var(--second-color);
+ font-weight: 600;
+ font-style: italic;
+}
+
+.big-homeCard-container h1 {
+ padding-bottom: 20px;
+}
+
+.homeCard-container {
+ display: flex;
+ justify-content: center;
+ flex-direction: column;
+ color: black;
+}
+
+.card-one,
+.card-two,
+.card-three {
+ padding: 30px 15px;
+ margin: 20px 0;
+ border-radius: 5px;
+ box-shadow: 0 4px 8px rgba(85, 85, 85, 0.2);
+ background-color: var(--background-input);
+}
+
+.homeCard-container i {
+ font-size: 30px;
+ padding-bottom: 15px;
+ color: var(--main-color);
+}
+
+@media screen and (min-width: 768px) {
+ .homeCard-container {
+ display: flex;
+ justify-content: center;
+ flex-direction: row;
+ gap: 50px;
+ }
+ .card-one,
+ .card-two,
+ .card-three {
+ margin: 30px 0;
+ width: 30%;
+ }
+}
diff --git a/frontend/src/components/HomeCard/HomeCard.jsx b/frontend/src/components/HomeCard/HomeCard.jsx
new file mode 100644
index 0000000..90ba420
--- /dev/null
+++ b/frontend/src/components/HomeCard/HomeCard.jsx
@@ -0,0 +1,59 @@
+import { useGlobalContext } from "../../contexts/GlobalContext";
+import "./HomeCard.css";
+
+function HomeCard() {
+ const { user } = useGlobalContext();
+ return (
+
+ {user ? (
+
+ {user.firstname}, Bienvenue chez Externatic !
+
+ ) : (
+
+ Bienvenue chez Externatic !
+
+ )}
+
+
+
+
Inscrivez-vous!
+
+ En vous inscrivant, initiez votre retour à l'emploi avec notre
+ plateforme ! Explorez des opportunités, acquérez des compétences,
+ créez des liens professionnels enrichissants. Notre engagement est
+ de vous fournir les outils nécessaires pour surmonter les défis et
+ atteindre vos objectifs professionnels, faisant ainsi de votre
+ avenir une promesse de réussite.{" "}
+
+
+
+
+
Remplissez votre CV
+
+ Vous allez pouvoir ajouter vos différentes formations et expériences
+ qui valoriseront davantage votre profil auprès des recruteurs. Cette
+ vitrine renforcera votre présence en ligne, augmentant vos chances
+ de captiver l'attention des employeurs. Exploitez cette opportunité
+ pour renforcez votre position sur le marché du travail et donnez un
+ nouvel élan à votre carrière.{" "}
+
+
+
+
+
Consultez les offres
+
+ Avec votre CV completé, notre système sélectionne minutieusement des
+ offres alignées sur vos compétences, maximisant ainsi vos chances
+ d'entretiens réussis. Simplifiant votre parcours professionnel, nous
+ vous dirigeons vers des opportunités reflétant au mieux vos
+ aptitudes, facilitant la recherche d'emploi et favorisant des
+ entrevues significatives.{" "}
+
+
+
+
+ );
+}
+
+export default HomeCard;
diff --git a/frontend/src/components/NavBar/NavBar.jsx b/frontend/src/components/NavBar/NavBar.jsx
index fb5ee4a..3620cdf 100644
--- a/frontend/src/components/NavBar/NavBar.jsx
+++ b/frontend/src/components/NavBar/NavBar.jsx
@@ -74,20 +74,13 @@ export default function Navbar() {
) : null}
{user ? (
- <>
-
- Se déconnecter
-
-
- {" "}
- {/*
*/}
- Hello {user.firstname}
-
- >
+
+ Se déconnecter
+
) : (
<>
diff --git a/frontend/src/contexts/AdminContext.jsx b/frontend/src/contexts/AdminContext.jsx
index 96abfd5..3b2ef96 100644
--- a/frontend/src/contexts/AdminContext.jsx
+++ b/frontend/src/contexts/AdminContext.jsx
@@ -37,9 +37,9 @@ function AdminContextProvider({ children }) {
navigate(`/dashboard/edit-offer/${id}`);
};
- const goToEditUser = (id) => {
- navigate(`/dashboard/edit-user/${id}`);
- };
+ // const goToEditUser = (id) => {
+ // navigate(`/dashboard/edit-user/${id}`);
+ // };
const contextValues = useMemo(
() => ({
@@ -51,7 +51,7 @@ function AdminContextProvider({ children }) {
handleOffers,
handleUsers,
goToEditOffer,
- goToEditUser,
+ // goToEditUser,
}),
[
isAdmin,
@@ -62,7 +62,7 @@ function AdminContextProvider({ children }) {
handleAddOffer,
handleOffers,
goToEditOffer,
- goToEditUser,
+ // goToEditUser,
]
);
diff --git a/frontend/src/main.jsx b/frontend/src/main.jsx
index f314e7a..cc6a868 100644
--- a/frontend/src/main.jsx
+++ b/frontend/src/main.jsx
@@ -94,9 +94,7 @@ const router = createBrowserRouter([
path: "/dashboard",
element: (
- {/* */}
- {/* */}
),
loader: async () => currentAdmin(apiService),
diff --git a/frontend/src/pages/HomeOffer/Home.css b/frontend/src/pages/HomeOffer/Home.css
index 0b83ef6..60b91ab 100644
--- a/frontend/src/pages/HomeOffer/Home.css
+++ b/frontend/src/pages/HomeOffer/Home.css
@@ -1,6 +1,9 @@
+.container-page h1 {
+ margin-bottom: 50px;
+}
+
@media all and (min-width: 1000px) {
#home .offer-container {
- margin-top: 30px;
display: flex;
flex-wrap: wrap;
justify-content: center;
@@ -13,4 +16,9 @@
width: 30%;
margin-bottom: 20px;
}
+ .container-page span {
+ color: var(--second-color);
+ font-weight: 600;
+ font-style: italic;
+ }
}
diff --git a/frontend/src/pages/HomeOffer/Home.jsx b/frontend/src/pages/HomeOffer/Home.jsx
index 97d7e07..54c1050 100644
--- a/frontend/src/pages/HomeOffer/Home.jsx
+++ b/frontend/src/pages/HomeOffer/Home.jsx
@@ -4,6 +4,7 @@ import { useGlobalContext } from "../../contexts/GlobalContext";
import "./Home.css";
import CardOffre from "../../components/CardModel/CardOffre";
import { useUserContext } from "../../contexts/UserContext";
+import HomeCard from "../../components/HomeCard/HomeCard";
function Home() {
const { goToOffer, apiService } = useGlobalContext();
@@ -62,7 +63,10 @@ function Home() {
textTitle2="Nos offres d'emploi"
/>
-
Les offres qui matchent !
+
+
+ Les offres qui matchent !
+
{matchingOffers.map((offer) => (
-
-
+
+
-
Modifier votre profil
-
-
{isAdmin ? (
ID User = {user.id}
diff --git a/frontend/src/pages/ProfileUser/EditUserDash.jsx b/frontend/src/pages/ProfileUser/EditUserDash.jsx
deleted file mode 100644
index 3a5b9ea..0000000
--- a/frontend/src/pages/ProfileUser/EditUserDash.jsx
+++ /dev/null
@@ -1,254 +0,0 @@
-import React, { useState, useEffect } from "react";
-import { useParams } from "react-router-dom";
-import HeaderCourt from "../../components/Headers/HeaderCourt";
-import ButtonMaxi from "../../components/Boutons/ButtonMaxi";
-import Select from "../../components/Inputs/Select";
-import Input from "../../components/Inputs/Input";
-import CompetenceSwitch from "../../components/Competence Switch/CompetenceSwitch";
-// Import de Context.
-import { useGlobalContext } from "../../contexts/GlobalContext";
-
-// Import messages d'erreurs.
-import ErrorMsg from "../../components/Alertes Messages/ErrorMsg";
-import SuccesMsg from "../../components/Alertes Messages/SuccesMsg";
-// Import styles.
-import "../Offer/add-offer.css";
-
-function EditUserDash() {
- const globalContext = useGlobalContext();
-
- const [user, setUser] = useState([]);
- const { id } = useParams();
-
- const fetchUser = async () => {
- try {
- const response = await globalContext.apiService.get(
- `${import.meta.env.VITE_BACKEND_URL}/api/users/${id}`
- );
- setUser(response.data);
- } catch (err) {
- console.error(err);
- }
- };
-
- const postEditUser = async () => {
- try {
- const infoUser = await globalContext.apiService.update(
- `${import.meta.env.VITE_BACKEND_URL}/api/admin/edit-users/${id}`,
- user,
- id
- );
- setUser(infoUser);
- } catch (err) {
- console.error(err);
- }
- };
-
- useEffect(() => {
- fetchUser();
- }, []);
-
- const handleEditUser = () => {
- if (
- user.title === "" ||
- user.company === "" ||
- user.type === "" ||
- user.city === "" ||
- user.mission === "" ||
- user.search_profile === "" ||
- user.work_place === "" ||
- user.salary === "" ||
- user.info === "" ||
- user.email === ""
- ) {
- globalContext.setErrorMsg(true);
- globalContext.setMsgContent("Veuillez remplir tous les champs");
- setTimeout(() => {
- globalContext.setErrorMsg(false);
- }, 2000);
- } else {
- // console.log(globalContext.isAdmin);
- postEditUser();
- // console.log(user);
- globalContext.setMsgContent("L'offre a été ajouté avec");
- globalContext.setSuccesMsg(true);
- setTimeout(() => {
- globalContext.setSuccesMsg(false);
- }, 2000);
- }
- };
-
- useEffect(() => {
- fetchUser();
- }, []);
-
- return (
-
-
-
-
-
Modifier votre profil
-
ID User = {id}
-
- globalContext.handleChange(setUser, "is_admin", event)
- }
- >
- False
- True
-
-
- globalContext.handleChange(setUser, "lastname", event)
- }
- />
-
- globalContext.handleChange(setUser, "firstname", event)
- }
- />
-
- globalContext.handleChange(setUser, "email", event)
- }
- />
-
-
- globalContext.handleChange(setUser, "phone", event)
- }
- />
-
- globalContext.handleChange(setUser, "address", event)
- }
- />
-
- {globalContext.errorMsg && (
-
- )}
- {globalContext.succesMsg && (
-
- )}
-
-
-
-
-
Cochez vos compétences *
-
- globalContext.handleCheckboxChange(setUser, "html")
- }
- fieldName="html"
- />
-
- globalContext.handleCheckboxChange(setUser, "css")
- }
- fieldName="css"
- />
-
- globalContext.handleCheckboxChange(setUser, "javascript")
- }
- />
-
- globalContext.handleCheckboxChange(setUser, "angular")
- }
- />
-
- globalContext.handleCheckboxChange(setUser, "react")
- }
- />
-
- globalContext.handleCheckboxChange(setUser, "php")
- }
- />
-
- globalContext.handleCheckboxChange(setUser, "symphony")
- }
- />
-
- globalContext.handleCheckboxChange(setUser, "git")
- }
- />
-
- globalContext.handleCheckboxChange(setUser, "github")
- }
- />
-
- globalContext.handleCheckboxChange(setUser, "trello")
- }
- />
-
-
-
- );
-}
-
-export default EditUserDash;
diff --git a/frontend/src/pages/ProfileUser/UserProfileModel.jsx b/frontend/src/pages/ProfileUser/UserProfileModel.jsx
index 7be2a26..8a03aa2 100644
--- a/frontend/src/pages/ProfileUser/UserProfileModel.jsx
+++ b/frontend/src/pages/ProfileUser/UserProfileModel.jsx
@@ -2,9 +2,9 @@ import { useEffect, useState } from "react";
// import PropTypes from "prop-types";
import "./user-profile-model.css";
import { useNavigate } from "react-router-dom";
+import Unknow from "../../assets/no-profile.jpg";
import ButtonMaxi from "../../components/Boutons/ButtonMaxi";
import { useGlobalContext } from "../../contexts/GlobalContext";
-import { useUserContext } from "../../contexts/UserContext";
import ErrorMsg from "../../components/Alertes Messages/ErrorMsg";
import SuccesMsg from "../../components/Alertes Messages/SuccesMsg";
import CardFormation from "../../components/CardModel/CardFormation";
@@ -15,7 +15,6 @@ import HeaderCourt from "../../components/Headers/HeaderCourt";
function UserProfileModel() {
const navigate = useNavigate();
- const { handleAddCv } = useUserContext();
const globalContext = useGlobalContext();
// const { skills, setSkills } = useSignContext();
const [getProfile, setGetProfile] = useState({});
@@ -123,6 +122,19 @@ function UserProfileModel() {
+
+
+
{getProfile.firstname} {getProfile.lastname}
@@ -197,7 +209,6 @@ function UserProfileModel() {
)}
-
);
diff --git a/frontend/src/pages/ProfileUser/user-profile-model.css b/frontend/src/pages/ProfileUser/user-profile-model.css
index 0745087..a31851d 100644
--- a/frontend/src/pages/ProfileUser/user-profile-model.css
+++ b/frontend/src/pages/ProfileUser/user-profile-model.css
@@ -33,6 +33,13 @@
background-color: var(--main-bg-color);
}
+.img-profil img {
+ width: 130px;
+ height: 130px;
+ border-radius: 200px;
+ margin-bottom: 20px;
+}
+
@media all and (min-width: 1000px) {
#user-profile-model .formation-container,
#user-profile-model .experience-container {