Merge pull request 'feature/projectSection' (#6) from feature/projectSection into dev

Reviewed-on: #6
This commit is contained in:
Giovanni-Josserand 2025-08-21 15:16:24 +00:00
commit c14a151352
6 changed files with 159 additions and 1 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 739 KiB

View File

@ -1,7 +1,18 @@
import SingleProject from "./SingleProject.jsx";
import "../styles/Projects.css"
function Projects() {
const desc = "A platform for creating and sharing code snippets with a clean and intuitive design. It allows you to create, share, and discover code snippets with ease."
return (
<section id="projects-section">
<h1>Projects</h1>
<SingleProject image="landscape" title="Portfolio" description={desc} skills={['HTML', 'CSS', 'React', 'Git']} color="orange" />
<SingleProject image="landscape" title="SAE C++" description={desc} skills={['C++', 'Git']} color="purple" />
<SingleProject image="landscape" title="Proxmox" description={desc} skills={[]} color="green" />
<div className="show-more-container">
<p className="show-more-link">
Show more
</p>
</div>
</section>
)
}

View File

@ -0,0 +1,32 @@
import SkillCard from './SkillCard';
import "../styles/SingleProject.css";
function SingleProject({image, title, description, skills, color}) {
return (
<div className="single-project">
<div className="single-project-left">
<img src={`/public/assets/images/${image}.jpeg`} alt={image}/>
</div>
<div className="single-project-middle">
<div aria-hidden="true" className={`single-project-line color-${color}`}></div>
</div>
<div className="single-project-right">
<h3 className="single-project-title">{title}</h3>
<p className="single-project-description">
{description}
</p>
<ul className="single-project-skills-list">
{skills.map(skill => (
<li key={skill}><SkillCard text={skill}/></li>
))}
</ul>
<p className="single-project-link">
Learn more
</p>
</div>
</div>
)
}
export default SingleProject

View File

@ -5,7 +5,7 @@
color-scheme: light dark;
color: rgba(255, 255, 255, 0.87);
background-color: #242424;
background-color: #121212;
font-synthesis: none;
text-rendering: optimizeLegibility;

23
src/styles/Projects.css Normal file
View File

@ -0,0 +1,23 @@
.show-more-container {
text-align: center;
margin-top: 2rem;
}
.show-more-link {
display: inline-block;
color: #B0B0B0;
border: 1px solid #B0B0B0;
background-color: transparent;
padding: 12px 28px;
border-radius: 8px;
font-weight: 600;
text-decoration: none;
transition: all 0.3s ease;
}
.show-more-link:hover {
background-color: #B0B0B0;
color: #1E1E1E;
transform: translateY(-3px);
cursor: pointer;
}

View File

@ -0,0 +1,92 @@
.single-project {
display: flex;
width: 80%;
margin: 2rem auto;
background-color: #1E1E1E;
overflow: hidden;
transition: all 0.3s ease-in-out;
border-radius: 12px;
}
.single-project:hover {
transform: translateY(-5px);
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.15);
}
.single-project-left {
flex-shrink: 0;
width: 55%;
}
.single-project-left img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
}
.single-project-right {
display: flex;
flex-direction: column;
justify-content: space-between;
padding: 2rem 2rem 2rem 0rem;
align-items: flex-start;
}
.single-project-title {
font-size: 2rem;
color: #EAEAEA;
margin-top: 0;
margin-bottom: 1rem;
}
.single-project-description {
color: #B0B0B0;
margin-bottom: 1.5rem;
text-align: justify;
}
.single-project-skills-list {
display: flex;
flex-wrap: wrap;
list-style: none;
padding: 0;
margin: 0;
gap: 8px;
}
.single-project-link {
color: #B0B0B0;
text-decoration: none;
font-weight: 600;
}
.single-project-link:hover {
cursor: pointer;
color: #EAEAEA;
}
.single-project-middle {
padding: 2rem 0.5rem;
}
.single-project-line {
border-radius: 38px;
min-width: 1.5rem;
height: 0.25rem;
margin-top: 1.5rem;
margin-left: 2rem;
}
.color-orange{
background-color: #D95F46;
}
.color-purple{
background-color: #a646d9;
}
.color-green{
background-color: #36a837;
}