Projects.jsx
vibe_coding/src/pages/Projects.jsx
import { useTranslation } from 'react-i18next';
import projects from '../data/projects.js';
import ProjectCard from '../components/ProjectCard.jsx';
export default function Projects() {
const { t } = useTranslation();
return (
<>
<header className="page-head">
<span className="eyebrow">{t('nav.projects')}</span>
<h1>{t('projects.title')}</h1>
<p>{t('projects.subtitle')}</p>
</header>
<section className="section">
<div className="container">
<div className="grid">
{projects.map((p) => (
<ProjectCard key={p.slug} project={p} />
))}
</div>
</div>
</section>
</>
);
}
Related articles
App.jsx
App.jsx — javascript source code from the vibe coding learning materials (vibe_coding/src/App.jsx).
Read article →Footer.jsx
Footer.jsx — javascript source code from the vibe coding learning materials (vibe_coding/src/components/Footer.jsx).
Read article →LanguageSwitcher.jsx
LanguageSwitcher.jsx — javascript source code from the vibe coding learning materials (vibe_coding/src/components/LanguageSwitcher.jsx).
Read article →Navbar.jsx
Navbar.jsx — javascript source code from the vibe coding learning materials (vibe_coding/src/components/Navbar.jsx).
Read article →ProjectCard.jsx
ProjectCard.jsx — javascript source code from the vibe coding learning materials (vibe_coding/src/components/ProjectCard.jsx).
Read article →ScrollToTop.jsx
ScrollToTop.jsx — javascript source code from the vibe coding learning materials (vibe_coding/src/components/ScrollToTop.jsx).
Read article →