Skip to content

Commit e8b0333

Browse files
committed
feat: allow multiple featured project sections on the home page
1 parent fb3d575 commit e8b0333

File tree

4 files changed

+33
-12
lines changed

4 files changed

+33
-12
lines changed

src/components/home/featured/featured-projects.tsx

+11-10
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,12 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
77
import { faCaretLeft, faCaretRight, faCircle } from '@fortawesome/free-solid-svg-icons';
88
import { useState } from 'react';
99

10-
const Gallery = () => {
11-
const projects: Projects = import.meta.glob('/src/projects/portfolio/*.mdx', {
10+
const Gallery = ({ projects }: { projects: string[] }) => {
11+
const importedProjects: Projects = import.meta.glob('/src/projects/portfolio/*.mdx', {
1212
eager: true,
1313
});
1414

15-
const featuredProjects: Project[] = Object.values(projects)
16-
.filter((project) => {
17-
return project.metadata.featured;
18-
})
19-
.sort((a, b) => a.metadata.featured - b.metadata.featured);
15+
const featuredProjects: Project[] = projects.map((project) => importedProjects[project]);
2016

2117
const [galleryIndex, setGalleryIndex] = useState(0);
2218

@@ -80,17 +76,22 @@ const Gallery = () => {
8076
);
8177
};
8278

83-
export default function FeaturedProjects() {
79+
type Params = {
80+
title: string;
81+
projects: string[];
82+
};
83+
84+
export default function FeaturedProjects({ title, projects }: Params) {
8485
return (
8586
<div id='featured-projects'>
8687
<div id='projects-title'>
87-
<h1>Featured Projects</h1>
88+
<h1>{title}</h1>
8889
<NavLink id='all-projects' className='button' to='/projects'>
8990
See All Projects
9091
</NavLink>
9192
</div>
9293
{/* <div id='projects-container'> */}
93-
<Gallery />
94+
<Gallery projects={projects} />
9495
{/* </div> */}
9596
</div>
9697
);

src/components/projects/project-card/project-card.scss

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
.project-image {
1616
width: 100%;
1717
aspect-ratio: 16/9;
18+
object-fit: cover;
1819
}
1920

2021
.project-info {

src/pages/home/home.tsx

+20-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,26 @@ export default function Home() {
99
<>
1010
<Hero />
1111
<SocialLinks />
12-
<FeaturedProjects />
12+
<FeaturedProjects
13+
title='Featured Web Projects'
14+
projects={[
15+
'/src/projects/portfolio/handbrake-web.mdx',
16+
'/src/projects/portfolio/dev-portfolio.mdx',
17+
'/src/projects/portfolio/games-portfolio.mdx',
18+
'/src/projects/portfolio/pokemon-search-app.mdx',
19+
'/src/projects/portfolio/realtime-multiplayer-game.mdx',
20+
'/src/projects/portfolio/rock-paper-scissors.mdx',
21+
]}
22+
/>
23+
<FeaturedProjects
24+
title='Featured Game Projects'
25+
projects={[
26+
'/src/projects/portfolio/thorb.mdx',
27+
'/src/projects/portfolio/dungeon-of-greyness.mdx',
28+
'/src/projects/portfolio/escape-room.mdx',
29+
'/src/projects/portfolio/gravity-box.mdx',
30+
]}
31+
/>
1332
</>
1433
);
1534
}

src/projects/portfolio/games-portfolio.mdx

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ export const metadata = {
22
thumb: 'thumbs/portfolio/games-portfolio.png',
33
name: 'Games Portfolio',
44
description:
5-
'I worked in game development for quite some time, you can see work in games here. The site itself was built with Jekyll & deployed via GitHub Pages.',
5+
'My previous portfolio website. The site itself was built with Jekyll & deployed via GitHub Pages.',
66
link: 'https://nickcunningh.am/games-portfolio/',
77
links: {
88
live: 'https://nickcunningh.am/games-portfolio/',

0 commit comments

Comments
 (0)