<>
<Button variant={'solid'} fontSize='md'>
// 이 버튼은 solid 타입을 가지며 폰트 사이즈는 '16px' 입니다.
</Button>
<Button variant={'outline'} fontSize='sm'>
// 이 버튼은 outline 타입을 가지며 폰트 사이즈는 '14px' 입니다.
</Button>
</>
Chakra UI 용어 정리 (Theming & Token)
Theming : 사용자 인터페이스(UI)의 기초 디자인을 수정하는 것
Token : 디자인 시스템에서 사용되는 기본 디자인 요소. (eg. colors, fonts, shadow, Button, Container...)
재정의한 테마 상속하기 : extendTheme
프로젝트를 시작하기 전 디자인 요구 사항에 맞게 테마를 새로 지정해주는 작업은 필수적입니다. 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하여 적용하게 되는 원리입니다.
package.json의 script에 설정된 theme 명령어를 입력하면 chakra-cli 가 실행되어 지정된 theme경로를 스캔한 후node_modules/@chakra-ui/styled-system/dist/theming.types.d.ts 경로에서 지정한 값들을 생성합니다.