# Next.js(App)에서 사용하기 URL: /docs/theming/next-app Next.js App Router 환경에서 @vapor-ui/core를 설정하고, 서버 사이드 렌더링(SSR)의 이점을 활용하여 깜빡임 없는 동적 테마를 구현하는 방법을 안내합니다. ## 개요 Next.js의 App Router에서 서버 사이드 렌더링(SSR)과 스트리밍 기능을 활용하면, `@vapor-ui/core`는 매우 효율적으로 깜빡임 없는(FOUC-free) 동적 테마를 구현할 수 있습니다. 핵심은 **`ThemeScript`** 컴포넌트에 있습니다. 이 컴포넌트는 React가 클라이언트에서 실행되기 전에, 서버가 보내는 초기 HTML에 FOUC 방지 스크립트를 미리 주입하는 역할을 합니다. ## 설정 방법 #### 1단계: 패키지 설치 ```bash npm install @vapor-ui/core ``` #### 2단계: 테마 설정 파일 생성 (선택사항이지만 권장) 프로젝트의 중앙에서 테마 설정을 관리하기 위해 별도 파일을 생성합니다. ```ts // lib/theme.config.ts import { createThemeConfig } from '@vapor-ui/core'; export const themeConfig = createThemeConfig({ appearance: 'system', // 'light', 'dark', or 'system' radius: 'full', scaling: 1.0, storageKey: 'my-next-app-theme', }); ``` #### 3단계: `layout.tsx`에 Provider 및 스크립트 설정 최상위 `app/layout.tsx` 파일에서 `ThemeProvider`와 `ThemeScript`를 설정합니다. ```tsx // app/layout.tsx import { themeConfig } from '@/lib/theme.config'; import { ThemeProvider, ThemeScript } from '@vapor-ui/core'; import type { Metadata } from 'next'; // 설정 파일 경로 // 필수: 스타일 시트를 임포트합니다. import '@vapor-ui/core/dist/styles.css'; export const metadata: Metadata = { title: 'Create Next App', description: 'Generated by create next app', }; export default function RootLayout({ children, }: Readonly<{ children: React.ReactNode; }>) { return ( // 'suppressHydrationWarning'은 필수입니다. // 서버와 클라이언트의 초기 테마 속성 불일치로 인한 경고를 방지합니다.
{/* FOUC 방지를 위한 스크립트입니다. 태그의 최상단에 위치하는 것을 권장합니다. */}