Dark Mode

1. Project Setup

typescript ๊ธฐ๋ฐ˜์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์„ธํŒ…ํ•˜๊ณ  styled-component ๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

$ npx create-react-app theme-exam --template typescript
$ cd theme-exam 
$ npm i -S styled-components

2. Theme ์Šคํƒ€์ผ ์ถ”๊ฐ€

Dark, Light ๋‘ ๊ฐ€์ง€ ํ…Œ๋งˆ์˜ ์Šคํƒ€์ผ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

// src/interfaces/theme.ts

export interface Theme {
    color: Color
}

export interface Color {
    [key: string]: string
}

Dark Style

Light Style

3. ThemeProvider

Dark, Light ๋‘ ๊ฐ€์ง€ ํ…Œ๋งˆ์˜ ์Šคํƒ€์ผ์„ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด์„œ styled-components ์˜ ThemeProvider ๋ฅผ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค. state ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ theme ์— ๋Œ€ํ•œ ์Šคํƒ€์ผ์„ ๋„ฃ์–ด์ค๋‹ˆ๋‹ค.

4. Theme ์ ์šฉ

ThemeProvider ์— theme props ์„ ์ด์šฉํ•˜๋ฉด ๋ชจ๋“  styled-components ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ณณ์—์„œ theme props ๋ฅผ ์ฃผ์ž…๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5. SVG ์ถ”๊ฐ€

ํƒœ์–‘๊ณผ ๋‹ฌ svg ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

Last updated

Was this helpful?