refactor: improve code structure

This commit is contained in:
Kim, Jimin 2023-08-08 00:39:28 +09:00
parent d4eef3d0dd
commit db05a792df
Signed by: pomp
GPG key ID: CE1DDB8A4A765403
4 changed files with 28 additions and 21 deletions

View file

@ -5,23 +5,30 @@ import type { Metadata } from "next"
import Badge from "@/components/Badge" import Badge from "@/components/Badge"
import ProjectCard from "@/components/ProjectCard" import ProjectCard from "@/components/ProjectCard"
const projects: JSX.Element[] = [] function getSkills(): JSX.Element[] {
const skills: JSX.Element[] = portfolio.skills.map((slug) => { return portfolio.skills.map((slug) => {
return <Badge key={slug} slug={slug} /> return <Badge key={slug} slug={slug} />
}) })
}
for (const projectID in portfolio.projects) { function getProjects(): JSX.Element[] {
projects.push( const projects = []
<ProjectCard
key={projectID} for (const projectID in portfolio.projects) {
projectID={projectID} projects.push(
project={ <ProjectCard
portfolio.projects[ key={projectID}
projectID as keyof typeof portfolio.projects projectID={projectID}
] as PortfolioProject project={
} portfolio.projects[
/> projectID as keyof typeof portfolio.projects
) ] as PortfolioProject
}
/>
)
}
return projects
} }
export const metadata: Metadata = { export const metadata: Metadata = {
@ -34,8 +41,8 @@ export default function Page() {
<> <>
<h1 className="mb-8">developomp's Portfolio</h1> <h1 className="mb-8">developomp's Portfolio</h1>
<hr /> <hr />
<div className="my-4 flex flex-wrap">{skills}</div> <div className="my-4 flex flex-wrap gap-2">{getSkills()}</div>
<div className="projects">{projects}</div> <div className="projects">{getProjects()}</div>
</> </>
) )
} }

View file

@ -76,7 +76,7 @@ export default async function Project({ params }: Props) {
<FontAwesomeIcon className="h-12" icon={faGithub} /> <FontAwesomeIcon className="h-12" icon={faGithub} />
</Link> </Link>
</div> </div>
<div className="flex flex-wrap"> <div className="flex flex-wrap gap-2">
{data.badges.map((slug) => { {data.badges.map((slug) => {
return <Badge key={slug} slug={slug} /> return <Badge key={slug} slug={slug} />
})} })}

View file

@ -6,7 +6,7 @@ interface BadgeProps {
slug: string slug: string
} }
const sharedBadgeStyles = "mb-2 mr-2 flex w-fit items-center px-2 py-1 text-xs" const sharedBadgeStyles = "flex w-fit items-center px-2 py-1 text-xs"
const sharedInnerBadgeStyles = "badge mr-1 inline-block w-6 align-middle" const sharedInnerBadgeStyles = "badge mr-1 inline-block w-6 align-middle"
export default async function Badge({ slug }: BadgeProps) { export default async function Badge({ slug }: BadgeProps) {

View file

@ -22,7 +22,7 @@ export default function ProjectCard({ projectID, project }: ProjectCardProps) {
alt="project thumbnail" alt="project thumbnail"
/> />
<div className="flex flex-wrap"> <div className="flex flex-wrap gap-2">
{project.badges.map((badge) => ( {project.badges.map((badge) => (
<Badge key={badge} slug={badge} /> <Badge key={badge} slug={badge} />
))} ))}