fix admin et eventdetail

This commit is contained in:
Antoine Ordonneau committed 2026-01-11 12:56:14 +01:00
1 parent c5a89fb49f
commit a028340cc1
13 files changed
+166 -158

No files matched your search

@@ -21,7 +21,7 @@ function IncompleteEvent() {
<h2>Événements incomplets</h2> <h2>Événements incomplets</h2>
<div className={styles.eventsContainer}> <div className={styles.eventsContainer}>
{incompleteEvents.map((event, index) => ( {incompleteEvents.map((event, index) => (
<div key={index} className={`glassCard ${styles.eventCard}`}> <div key={index} className={`glassBorder ${styles.eventCard}`}>
<h3>{event.title}</h3> <h3>{event.title}</h3>
<ul className={styles.tasksList}> <ul className={styles.tasksList}>
{event.tasks.map((task, taskIndex) => ( {event.tasks.map((task, taskIndex) => (
@@ -28,21 +28,7 @@
} }
.eventsContainer::-webkit-scrollbar { .eventsContainer::-webkit-scrollbar {
height: 8px; display: none;
}
.eventsContainer::-webkit-scrollbar-track {
background: rgba(0, 0, 0, 0.1);
border-radius: 10px;
}
.eventsContainer::-webkit-scrollbar-thumb {
background: rgba(30, 96, 249, 0.5);
border-radius: 10px;
}
.eventsContainer::-webkit-scrollbar-thumb:hover {
background: rgba(30, 96, 249, 0.7);
} }
.eventCard { .eventCard {
@@ -58,7 +44,6 @@
opacity: 0; opacity: 0;
transform: translateX(20px); transform: translateX(20px);
animation: slideInEvent 1s ease forwards; animation: slideInEvent 1s ease forwards;
flex-shrink: 1; flex-shrink: 1;
padding: 10px; padding: 10px;
text-align: center; text-align: center;
@@ -89,6 +74,10 @@
animation-delay: 0.5s; animation-delay: 0.5s;
} }
.eventCard::-webkit-scrollbar {
display: none;
}
.eventCard>h3 { .eventCard>h3 {
font-size: 24px; font-size: 24px;
} }
@@ -26,7 +26,7 @@ function pendingMembers() {
<h2>Membres en attente de validation</h2> <h2>Membres en attente de validation</h2>
<div className={styles.membersContainer}> <div className={styles.membersContainer}>
{pendingMembers.map((member, index) => ( {pendingMembers.map((member, index) => (
<div key={index} className={`glassCard ${styles.memberCard}`}> <div key={index} className={`glassBorder ${styles.memberCard}`}>
<p>{member.name}</p> <p>{member.name}</p>
<div className={styles.buttonGroup}> <div className={styles.buttonGroup}>
<Button onClick={() => handleValidate(member.name)} variant="primary"> <Button onClick={() => handleValidate(member.name)} variant="primary">
@@ -19,21 +19,7 @@
.membersContainer::-webkit-scrollbar { .membersContainer::-webkit-scrollbar {
width: 8px; display: none;
}
.membersContainer::-webkit-scrollbar-track {
background: rgba(0, 0, 0, 0.1);
border-radius: 10px;
}
.membersContainer::-webkit-scrollbar-thumb {
background: rgba(255, 0, 0, 0.5);
border-radius: 10px;
}
.membersContainer::-webkit-scrollbar-thumb:hover {
background: rgba(125, 249, 30, 0.7);
} }
.memberCard { .memberCard {
+1 -1
View File
@@ -40,7 +40,7 @@ function participationChart() {
return ( return (
<div className={`${styles.leftBlock} glassCard`}> <div className={`${styles.leftBlock} glassCard`}>
<div className={styles.participationHeader}> <div className={styles.participationHeader}>
<div className={`${styles.partiText} glassCard`}> <div className={`${styles.partiText} glassBorder`}>
<label htmlFor={styles.months}>Taux de participation depuis :</label> <label htmlFor={styles.months}>Taux de participation depuis :</label>
<div className={styles.formControl}> <div className={styles.formControl}>
<FormControl className={styles.formDesign}> <FormControl className={styles.formDesign}>
+2 -2
View File
@@ -73,7 +73,7 @@ function Calendar() {
}; };
return ( return (
<div className={styles.glassCard}> <div className={`${styles.glassCard} glassCard`}>
<div className={styles.calendarContainer}> <div className={styles.calendarContainer}>
<div className={styles.calendarHeader}> <div className={styles.calendarHeader}>
<button onClick={handlePrevMonth}>◀</button> <button onClick={handlePrevMonth}>◀</button>
@@ -124,7 +124,7 @@ function Calendar() {
</table> </table>
{selectedDay && ( {selectedDay && (
<div className={styles.eventBox}> <div className={`${styles.eventBox} glassBorder`}>
<h3>Événements du {formatDateLetter(selectedDay.date)}</h3> <h3>Événements du {formatDateLetter(selectedDay.date)}</h3>
{selectedDay.events.length > 0 ? ( {selectedDay.events.length > 0 ? (
+1 -18
View File
@@ -109,13 +109,6 @@
border-radius: 20px; border-radius: 20px;
padding: 15px; padding: 15px;
margin-top: 16px; margin-top: 16px;
border: none;
background: rgb(255, 255, 255, 0.25);
box-shadow:
inset 1.25px 1.25px 1px rgba(255, 255, 255, 1),
inset -1.25px -1.25px 1px rgba(255, 255, 255, 1),
inset -0.25px 0.25px 1px rgba(0, 0, 0, 0.2),
inset 0.25px -0.25px 1px rgba(0, 0, 0, 0.2);
} }
.eventBox ul { .eventBox ul {
@@ -137,21 +130,11 @@
.glassCard { .glassCard {
width: 45%; width: 45%;
max-height: 450px; max-height: 100%;
margin: 16px 0px 16px 0px; margin: 16px 0px 16px 0px;
padding: 10px 20px 10px 20px; padding: 10px 20px 10px 20px;
height: fit-content; height: fit-content;
background: rgba(255, 255, 255, 0.65);
backdrop-filter: blur(3px);
-webkit-backdrop-filter: blur(3px);
border-radius: 20px;
border: 1px solid rgba(255, 255, 255, 0.3);
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1),
inset 0 1px 0 rgba(255, 255, 255, 0.5),
inset 0 -1px 0 rgba(255, 255, 255, 0.1),
inset 0 0 8px 4px rgba(255, 255, 255, 0.4);
overflow: scroll; overflow: scroll;
} }
.glassCard::-webkit-scrollbar{ .glassCard::-webkit-scrollbar{
+2 -2
View File
@@ -17,12 +17,12 @@ function eventList() {
}, [events]); }, [events]);
return ( return (
<div className={styles.glassCard}> <div className={`${styles.glassCard} glassCard`}>
<h2>Liste des événements à venir</h2> <h2>Liste des événements à venir</h2>
{sortedEvents.length > 0 ? ( {sortedEvents.length > 0 ? (
<ul className={styles.eventList}> <ul className={styles.eventList}>
{sortedEvents.map((eventGroup) => ( {sortedEvents.map((eventGroup) => (
<li key={eventGroup.date} className={styles.eventGroup}> <li key={eventGroup.date} className={`${styles.eventGroup} glassBorder`}>
<div className={styles.eventDate}> <div className={styles.eventDate}>
<strong>{formatDateLetter(eventGroup.date)}</strong> <strong>{formatDateLetter(eventGroup.date)}</strong>
</div> </div>
+1 -19
View File
@@ -1,20 +1,10 @@
.glassCard { .glassCard {
width: 45%; width: 45%;
max-height: 450px; max-height: 100%;
margin: 16px 0px 16px 0px; margin: 16px 0px 16px 0px;
padding: 10px 20px 10px 20px; padding: 10px 20px 10px 20px;
height: fit-content; height: fit-content;
background: rgba(255, 255, 255, 0.65);
backdrop-filter: blur(3px);
-webkit-backdrop-filter: blur(3px);
border-radius: 20px;
border: 1px solid rgba(255, 255, 255, 0.3);
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1),
inset 0 1px 0 rgba(255, 255, 255, 0.5),
inset 0 -1px 0 rgba(255, 255, 255, 0.1),
inset 0 0 8px 4px rgba(255, 255, 255, 0.4);
overflow: scroll; overflow: scroll;
} }
.glassCard::-webkit-scrollbar{ .glassCard::-webkit-scrollbar{
@@ -53,14 +43,6 @@ h2{
.eventGroup{ .eventGroup{
margin: 16px 0px 16px 0px; margin: 16px 0px 16px 0px;
padding: 10px 20px 10px 20px; padding: 10px 20px 10px 20px;
border-radius: 20px;
border: none;
background: transparent;
box-shadow:
inset 1.25px 1.25px 1px rgba(255, 255, 255, 1),
inset -1.25px -1.25px 1px rgba(255, 255, 255, 1),
inset -0.25px 0.25px 1px rgba(0, 0, 0, 0.2),
inset 0.25px -0.25px 1px rgba(0, 0, 0, 0.2);
} }
@media (max-width: 768px) { @media (max-width: 768px) {
+22 -25
View File
@@ -52,33 +52,30 @@ body {
} }
/*.glassCard {
width: 100%;
height: fit-content;
background: rgba(255, 255, 255, 0.65);
backdrop-filter: blur(3px);
-webkit-backdrop-filter: blur(3px);
border-radius: 20px;
border: 1px solid rgba(255, 255, 255, 0.3);
box-shadow:
0 8px 32px rgba(0, 0, 0, 0.1),
inset 0 1px 0 rgba(255, 255, 255, 0.5),
inset 0 -1px 0 rgba(255, 255, 255, 0.1),
inset 0 0 8px 4px rgba(255, 255, 255, 0.4);
position: relative;
overflow: hidden;
}*/
/* style a montrer a giovanni prcq il est + bo */
.glassCard { .glassCard {
background: rgba(255, 255, 255, 0.2); padding: 10px 20px 10px 20px;
backdrop-filter: blur(10px); background: rgba(255, 255, 255, 0.54);
border-radius: 20px; backdrop-filter: blur(3px);
padding: 15px; -webkit-backdrop-filter: blur(3px);
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); border-radius: 20px;
border: 1px solid rgba(255, 255, 255, 0.3); border: 1px solid rgba(255, 255, 255, 0.2);
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1),
inset 0 1px 0 rgba(255, 255, 255, 0.3),
inset 0 -1px 0 rgba(255, 255, 255, 0.05),
inset 0 0 8px 4px rgba(255, 255, 255, 0.2);
} }
.glassBorder{
border-radius: 20px;
border: none;
background: rgba(255, 255, 255, 0.5);
box-shadow:
inset 1.25px 1.25px 1px rgba(255, 255, 255, 1),
inset -1.25px -1.25px 1px rgba(255, 255, 255, 1),
inset -0.25px 0.25px 1px rgba(0, 0, 0, 0.2),
inset 0.25px -0.25px 1px rgba(0, 0, 0, 0.2);
}
h1 { h1 {
font-size: 3.2em; font-size: 3.2em;
line-height: 1.1; line-height: 1.1;
+52 -29
View File
@@ -1,47 +1,70 @@
import { useState } from "react"; import {useState} from "react";
import styles from "./eventDetail.module.css"; import styles from "./eventDetail.module.css";
import { useParams } from "react-router";
function eventDetail(){ function eventDetail() {
const [tasks] = useState([ const params = useParams();
{ text: "Préparer les slides", completed: false }, const id = params.id;
{ text: "Réserver la salle", completed: false },
{ text: "Envoyer les invitations", completed: false }, const [tasks, setTasks] = useState([
{ text: "Tester la configuration technique", completed: false }, { text: "Préparer les slides", registered: false },
{ text: "Organiser le catering", completed: false }, { text: "Réserver la salle", registered: false },
{ text: "Envoyer les invitations", registered: false },
{ text: "Tester la configuration technique", registered: false },
{ text: "Organiser le catering", registered: false },
]); ]);
const event = { const event = {
title: "Conférence React 2025", title: "Conférence React 2025",
date: "27 Décembre 2025", date: "27 Décembre 2025",
location: "Paris, France", location: "Paris, France",
description: description: "azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop"
"Une conférence dédiée aux développeurs React pour partager les dernières nouveautés et bonnes pratiques.", };
const toggleRegister = (index) => {
setTasks((prevTasks) =>
prevTasks.map((task, i) =>
i === index
? { ...task, registered: !task.registered }
: task
)
);
}; };
return ( return (
<div className={styles.container}> <div className={styles.allContent}>
<h1 className={styles.title}>{event.title}</h1> <div className={`glassCard`}>
<div className={styles.eventInfo}> <div className={styles.textImage}>
<p><strong>Date:</strong> {event.date}</p> <img src="/public/icons/theme/dark.svg" alt="Illustration événement" className={styles.eventImage}/>
<p><strong>Lieu:</strong> {event.location}</p> <div className={styles.eventInfo}>
<p><strong>Description:</strong> {event.description}</p> <h2>{event.title}</h2>
</div> <p>Date: {event.date}</p>
<p>Lieu: {event.location}</p>
<p>Description: {event.description}</p>
</div>
</div>
<h2>Tâches</h2> <h2>Tâches</h2>
<ul className={styles.tasks}> <ul className={styles.tasks}>
{tasks.map((task, index) => ( {tasks.map((task, index) => (
<li <li style={{"--i": index}} key={index}>
key={index} <div className={styles.tasksButton}>
className={task.completed ? styles.completed : ""} <span><strong>{task.text}</strong></span>
> <button
<span>{task.text}</span> className={styles.registerButton}
</li> onClick={() => toggleRegister(index)}
))} >
</ul> {task.registered ? "Se désinscrire" : "S’inscrire"}
</button>
</div>
</li>
))}
</ul>
</div>
</div> </div>
); );
} }
export default eventDetail; export default eventDetail;
+76 -28
View File
@@ -1,23 +1,62 @@
.container { .allContent{
max-width: 600px; margin: 16px 0px 16px 0px;
margin: 40px auto; align-self: center;
background-color: #fff; width: 90%;
border-radius: 10px;
box-shadow: 0 4px 8px rgba(0,0,0,0.1);
padding: 20px;
font-family: Arial, sans-serif;
} }
.title {
font-size: 2rem; .textImage {
color: #333; display: flex;
margin-bottom: 10px; gap: 24px;
}
.eventImage {
width: 40%;
aspect-ratio: 16 / 9;
background-color: #e0e0e0;
border-radius: 16px;
flex-shrink: 0;
}
.eventInfo {
flex: 1;
min-width: 0;
overflow-wrap: break-word;
} }
.eventInfo p { .eventInfo p {
margin: 5px 0; white-space: normal;
font-size: 1rem; overflow-wrap: break-word;
color: #555; }
.eventImage {
width: 40%;
height: 100%;
aspect-ratio: 16 / 9;
background-color: #e0e0e0;
border-radius: 16px;
flex-shrink: 0;
}
.registerButton {
margin-left: auto;
padding: 5px 10px;
border-radius: 12px;
border: none;
cursor: pointer;
background: #019AFF;
color: white;
font-weight: 600;
}
.registerButton:hover {
opacity: 0.85;
}
.tasksButton {
display: flex;
align-items: center;
gap: 16px;
} }
.tasks { .tasks {
@@ -26,19 +65,28 @@
} }
.tasks li { .tasks li {
background-color: #f9f9f9; margin: 16px 0px 16px 0px;
margin: 5px 0; padding: 10px 20px 10px 20px;
padding: 10px; border-radius: 20px;
border-radius: 5px; border: none;
display: flex; background: transparent;
align-items: center; box-shadow:
inset 1.25px 1.25px 1px rgba(255, 255, 255, 1),
inset -1.25px -1.25px 1px rgba(255, 255, 255, 1),
inset -0.25px 0.25px 1px rgba(0, 0, 0, 0.2),
inset 0.25px -0.25px 1px rgba(0, 0, 0, 0.2);
opacity: 0;
animation: fadeInUp 0.6s ease-out forwards;
animation-delay: calc(var(--i) * 0.1s);
} }
.tasks li.completed { @keyframes fadeInUp {
text-decoration: line-through; from {
opacity: 0.6; opacity: 0;
} transform: translateY(10px);
}
.tasks input[type="checkbox"] { to {
margin-right: 10px; opacity: 1;
transform: translateY(0);
}
} }
+1 -1
View File
@@ -62,7 +62,7 @@ const router = createBrowserRouter([
Component: VolunteerProfilePage, Component: VolunteerProfilePage,
}, },
{ {
path: "/eventDetail", path: "/events/:id",
Component: eventDetail, Component: eventDetail,
}, },
] ]