프로젝트를 시작하기 전 디자인 요구 사항에 맞게 테마를 새로 지정해주는 작업은 필수적입니다. Tokplate에서는 src/styles/theme 에서 커스텀 테마를 정의한 후 extendTheme를 사용하여 기본 테마의 설정된 값들을 재정의(override) 해주고 있습니다.
물론 재정의 뿐만아니라 새로운 값을 추가 할 수도 있습니다. Tokplate에서는 textStyles라는 새로운 값을 추가하여 fontSize, fontWeight, lineHeight 들을 가지는 규격화된 Text 사이즈를 사용하고 있습니다. (src/styles/theme/textStyles.ts)
import { extendTheme } from '@chakra-ui/react';
// Component style overrides
import components from './components';
// Foundational style overrides
import foundations from './foundations';
// Global style overrides
import styles from './styles';
// TextStyles
import textStyles from './textStyles';
const overrides = {
...foundations,
components,
styles,
textStyles,
};
export default extendTheme(overrides);
재정의한 테마 적용하기: ChakraProvider
Tokplate는 Provider에 관련된 컴포넌트들을 애플리케이션을 감싸는 HOC(withApiiProvider)을 생성해 관리하고 있습니다. (src/contexts/app/app.provider.tsx)
<ChakraProvider/>에 styles/theme 경로에서 재정의한 테마를 import하여 적용하게 되는 원리입니다.
Chakra UI에서는 Chakra UI CLI를 사용하여 재정의한 테마 속성을 바로 입력할 수 있습니다.
package.json의 script에 설정된 theme 명령어를 입력하면 chakra-cli 가 실행되어 지정된 theme경로를 스캔한 후node_modules/@chakra-ui/styled-system/dist/theming.types.d.ts 경로에서 지정한 값들을 생성합니다.