Home → Portfolio → Blog → Travel → Lotto → Stock → Music → Realestate → Blog Lab → Todo → Agent Office → Lab 순으로 navLinks 재정렬. BottomNav도 동일 source를 사용해 모바일 더보기 패널까지 함께 반영됨. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
204 lines
5.2 KiB
JavaScript
204 lines
5.2 KiB
JavaScript
import React, { lazy } from 'react';
|
|
import {
|
|
IconHome,
|
|
IconBlog,
|
|
IconLotto,
|
|
IconStock,
|
|
IconBuilding,
|
|
IconTravel,
|
|
IconMusic,
|
|
IconLab,
|
|
IconTodo,
|
|
IconBlogMarketing,
|
|
IconPortfolio,
|
|
} from './components/Icons';
|
|
|
|
const Home = lazy(() => import('./pages/home/Home'));
|
|
const Blog = lazy(() => import('./pages/blog/Blog'));
|
|
const Lotto = lazy(() => import('./pages/lotto/Lotto'));
|
|
const Travel = lazy(() => import('./pages/travel/Travel'));
|
|
const Stock = lazy(() => import('./pages/stock/Stock'));
|
|
const StockTrade = lazy(() => import('./pages/stock/StockTrade'));
|
|
const Subscription = lazy(() => import('./pages/subscription/Subscription'));
|
|
const EffectLab = lazy(() => import('./pages/effect-lab/EffectLab'));
|
|
const SwordStream = lazy(() => import('./pages/effect-lab/SwordStream'));
|
|
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 = [
|
|
{
|
|
id: 'home',
|
|
label: 'Home',
|
|
path: '/',
|
|
subtitle: 'PERSONAL ARCHIVE',
|
|
description: '첫 인상과 최신 업데이트를 모아둔 허브',
|
|
icon: <IconHome />,
|
|
accent: '#f7a8a5',
|
|
},
|
|
{
|
|
id: 'portfolio',
|
|
label: 'Portfolio',
|
|
path: '/portfolio',
|
|
subtitle: 'RESUME',
|
|
description: '개인 포트폴리오 — 프로필, 이력, 프로젝트 쇼케이스',
|
|
icon: <IconPortfolio />,
|
|
accent: '#06b6d4',
|
|
},
|
|
{
|
|
id: 'blog',
|
|
label: 'Blog',
|
|
path: '/blog',
|
|
subtitle: 'JOURNAL',
|
|
description: '생각과 기록, 코드 스니펫을 모으는 공간',
|
|
icon: <IconBlog />,
|
|
accent: '#c084fc',
|
|
},
|
|
{
|
|
id: 'travel',
|
|
label: 'Travel',
|
|
path: '/travel',
|
|
subtitle: 'VISUAL DIARY',
|
|
description: '여행에서 담은 색과 장면을 전시하는 갤러리',
|
|
icon: <IconTravel />,
|
|
accent: '#fb923c',
|
|
},
|
|
{
|
|
id: 'lotto',
|
|
label: 'Lotto',
|
|
path: '/lotto',
|
|
subtitle: 'PLAYGROUND',
|
|
description: '숫자를 뽑고 통계를 확인하는 실험실',
|
|
icon: <IconLotto />,
|
|
accent: '#34d399',
|
|
},
|
|
{
|
|
id: 'stock',
|
|
label: 'Stock',
|
|
path: '/stock',
|
|
subtitle: '마켓 랩',
|
|
description: '아침 시장 흐름을 확인하는 주식 연구실',
|
|
icon: <IconStock />,
|
|
accent: '#60a5fa',
|
|
},
|
|
{
|
|
id: 'music',
|
|
label: 'Music',
|
|
path: '/music',
|
|
subtitle: 'SONIC FORGE',
|
|
description: 'AI로 세상에 하나뿐인 음악을 만드는 스튜디오',
|
|
icon: <IconMusic />,
|
|
accent: '#f5a623',
|
|
},
|
|
{
|
|
id: 'realestate',
|
|
label: 'Realestate',
|
|
path: '/realestate',
|
|
subtitle: '부동산',
|
|
description: '청약 공고 자동 수집, 매칭, 프로필 기반 자격 분석',
|
|
icon: <IconBuilding />,
|
|
accent: '#f43f5e',
|
|
},
|
|
{
|
|
id: 'blog-lab',
|
|
label: 'Blog Lab',
|
|
path: '/blog-lab',
|
|
subtitle: 'MONETIZE',
|
|
description: 'AI 블로그 마케팅으로 수익을 만드는 연구소',
|
|
icon: <IconBlogMarketing />,
|
|
accent: '#10b981',
|
|
},
|
|
{
|
|
id: 'todo',
|
|
label: 'Todo',
|
|
path: '/todo',
|
|
subtitle: 'TASK BOARD',
|
|
description: '할 일을 관리하는 태스크 보드',
|
|
icon: <IconTodo />,
|
|
accent: '#f472b6',
|
|
},
|
|
{
|
|
id: 'agent-office',
|
|
label: 'Agent Office',
|
|
path: '/agent-office',
|
|
subtitle: 'AI LAB',
|
|
description: 'AI 에이전트 사무실',
|
|
icon: <span style={{fontSize:'1.2em'}}>🏢</span>,
|
|
accent: '#8b5cf6',
|
|
},
|
|
{
|
|
id: 'lab',
|
|
label: 'Lab',
|
|
path: '/lab',
|
|
subtitle: 'STREAM',
|
|
description: '실험적인 UI/UX 효과를 테스트하는 공간',
|
|
icon: <IconLab />,
|
|
accent: '#fbbf24',
|
|
},
|
|
];
|
|
|
|
export const appRoutes = [
|
|
{
|
|
index: true,
|
|
element: <Home />,
|
|
},
|
|
{
|
|
path: 'blog',
|
|
element: <Blog />,
|
|
},
|
|
{
|
|
path: 'lotto',
|
|
element: <Lotto />,
|
|
},
|
|
{
|
|
path: 'stock',
|
|
element: <Stock />,
|
|
},
|
|
{
|
|
path: 'stock/trade',
|
|
element: <StockTrade />,
|
|
},
|
|
{
|
|
path: 'realestate',
|
|
element: <Subscription />,
|
|
},
|
|
{
|
|
path: 'travel',
|
|
element: <Travel />,
|
|
},
|
|
{
|
|
path: 'lab',
|
|
element: <EffectLab />,
|
|
},
|
|
{
|
|
path: 'lab/sword-stream',
|
|
element: <SwordStream />,
|
|
},
|
|
{
|
|
path: 'lab/day-calc',
|
|
element: <DayCalc />,
|
|
},
|
|
{
|
|
path: 'music',
|
|
element: <MusicStudio />,
|
|
},
|
|
{
|
|
path: 'blog-lab',
|
|
element: <BlogMarketing />,
|
|
},
|
|
{
|
|
path: 'todo',
|
|
element: <Todo />,
|
|
},
|
|
{
|
|
path: 'portfolio',
|
|
element: <Portfolio />,
|
|
},
|
|
{
|
|
path: 'agent-office',
|
|
lazy: () => import('./pages/agent-office/AgentOffice'),
|
|
},
|
|
];
|