feat(portfolio): 포트폴리오 페이지 전체 구현

- 3탭 구조: 프로필&경력, 프로젝트, 자기소개
- 비밀번호 인증 → 편집 모드
- 클립보드 복사, PDF 내보내기 (window.print)
- 사이버펑크 테마 CSS, 모바일 반응형

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-27 14:37:25 +09:00
parent bebd55874c
commit a6dd2ef747
10 changed files with 1673 additions and 0 deletions

View File

@@ -10,6 +10,7 @@ import {
IconLab,
IconTodo,
IconBlogMarketing,
IconPortfolio,
} from './components/Icons';
const Home = lazy(() => import('./pages/home/Home'));
@@ -25,6 +26,7 @@ const DayCalc = lazy(() => import('./pages/effect-lab/DayCalc'));
const Todo = lazy(() => import('./pages/todo/Todo'));
const MusicStudio = lazy(() => import('./pages/music/MusicStudio'));
const BlogMarketing = lazy(() => import('./pages/blog-marketing/BlogMarketing'));
const Portfolio = lazy(() => import('./pages/portfolio/Portfolio'));
export const navLinks = [
{
@@ -117,6 +119,15 @@ export const navLinks = [
icon: <IconTodo />,
accent: '#f472b6',
},
{
id: 'portfolio',
label: 'Portfolio',
path: '/portfolio',
subtitle: 'RESUME',
description: '개인 포트폴리오 — 프로필, 이력, 프로젝트 쇼케이스',
icon: <IconPortfolio />,
accent: '#06b6d4',
},
{
id: 'agent-office',
label: 'Agent Office',
@@ -181,6 +192,10 @@ export const appRoutes = [
path: 'todo',
element: <Todo />,
},
{
path: 'portfolio',
element: <Portfolio />,
},
{
path: 'agent-office',
lazy: () => import('./pages/agent-office/AgentOffice'),