Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 24 additions & 15 deletions .storybook/main.js
Original file line number Diff line number Diff line change
@@ -1,19 +1,28 @@
/** @type { import('@storybook/react-vite').StorybookConfig } */
import svgr from 'vite-plugin-svgr';

const config = {
"stories": [
"../src/**/*.mdx",
"../src/**/*.stories.@(js|jsx|mjs|ts|tsx)"
stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'],
addons: [
'@chromatic-com/storybook',
'@storybook/addon-docs',
'@storybook/addon-onboarding',
'@storybook/addon-a11y',
'@storybook/addon-vitest',
],
"addons": [
"@chromatic-com/storybook",
"@storybook/addon-docs",
"@storybook/addon-onboarding",
"@storybook/addon-a11y",
"@storybook/addon-vitest"
],
"framework": {
"name": "@storybook/react-vite",
"options": {}
}
framework: {
name: '@storybook/react-vite',
options: {},
},
docs: { autodocs: 'tag' },
viteFinal: async (cfg) => {
cfg.resolve = cfg.resolve || {};
cfg.resolve.alias = {
...(cfg.resolve.alias || {}),
'@': '/src',
};
cfg.plugins = [...(cfg.plugins || []), svgr()];
return cfg;
},
};
export default config;
export default config;
29 changes: 26 additions & 3 deletions .storybook/preview.js
Original file line number Diff line number Diff line change
@@ -1,20 +1,43 @@
/** @type { import('@storybook/react-vite').Preview } */

// 전역 스타일: Tailwind나 앱 공통 CSS를 스토리북에도 적용
import '../src/index.css';

const preview = {
parameters: {
layout: 'centered', // 스토리북 미리보기 영역 중앙 정렬 (컴포넌트 확인 편함)
// Controls 패널에서 color/date 인풋을 자동 매핑
controls: {
matchers: {
color: /(background|color)$/i,
date: /Date$/i,
},
},

// 접근성 테스트 설정 (현재: UI에서만 표시)
a11y: {
// 'todo' - show a11y violations in the test UI only
// 'error' - fail CI on a11y violations
// 'off' - skip a11y checks entirely
// 'todo' - 테스트 UI에만 표시
// 'error' - CI에서 에러로 처리
// 'warn' - CI에서 경고로 처리
// 'off' - 테스트 비활성화
test: 'todo',
},

// 배경 프리셋(선택): 컴포넌트 대비 확인용
backgrounds: {
default: 'plain',
values: [
{ name: 'plain', value: '#ffffff' },
{ name: 'app-gray', value: '#f5f5f5' },
{ name: 'dark', value: '#1f2937' },
],
},
},

// 전역 데코레이터가 필요하면 여기에 추가 (예: 테마 Provider, Router 등)
// decorators: [
// (Story) => (<ThemeProvider><Story /></ThemeProvider>)
// ],
};

export default preview;
10 changes: 5 additions & 5 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
"react-dom": "^19.1.0",
"react-icons": "^5.5.0",
"react-router-dom": "^7.6.2",
"vite-plugin-svgr": "^4.3.0",
"vite-plugin-svgr": "^4.5.0",
"zustand": "^5.0.5"
},
"devDependencies": {
Expand Down
12 changes: 8 additions & 4 deletions src/app/index.jsx
Original file line number Diff line number Diff line change
@@ -1,20 +1,24 @@
// 전역 컨텍스트 및 상태 관리 설정 (라우팅, 인증 등)

import {
BrowserRouter,
Routes,
Route,
useLocation,
Navigate,
} from 'react-router-dom';

import Header from '../widgets/navigation/Header';
import Footer from '../widgets/navigation/Footer';

import Home from '../pages/home';
import TrackInfo from '../pages/info';
import NotFound from '../pages/NotFound';
import Search from '../pages/Search';
import Splash from '../pages/splash';
import Header from '../widgets/navigation/Header';
import Footer from '../widgets/navigation/Footer';
import Login from '../pages/login';
import MyPage from '../pages/my';
import UploadSection from '../components/UploadSection';
import TrackDataUploadModal from '../features/track-management/components/TrackDataUploadModal';

function App() {
return (
Expand All @@ -40,7 +44,7 @@ function AppContent() {
<Route path="/track" element={<TrackInfo />} />
<Route path="/search" element={<Search />} />
<Route path="/mypage" element={<MyPage />} />
<Route path="/upload" element={<UploadSection />} />
<Route path="/upload" element={<TrackDataUploadModal />} />
<Route path="*" element={<NotFound />} />
</Routes>
{!shouldHideHeaderFooter && <Footer />}
Expand Down
Loading