구글의 Material Design에서 영감을 받아 만들어진 Material Kit React는 일관성을 주요 특징으로 하는 요소 세트를 구축합니다. 그런 방식으로 웹 개발 프로젝트는 외관과 기능 면에서 유사성을 유지합니다. 키트에는 버튼, 배지, 슬라이더, 메뉴, 페이지, 네비게이션, 탭 및 알약과 같은 여러 기본 요소도 포함되어 있습니다. 이 리액트 컴포넌트 프레임워크를 사용하여 대부분의 요소에 대해 스타일, 크기 및 색상을 사용자 지정할 수 있습니다. 자바스크립트 요소에는 모달, 툴팁, 날짜 시간 선택기, 캐러셀 및 팝오버가 포함됩니다.
Material UI는 가장 인기 있는 React UI 프레임워크 중 하나로 새로운 기능을 더 빨리 전송하기 위해 기본적인 React UI 구성 요소 라이브러리를 포함합니다.
yarn add @mui/material @emotion/react @emotion/styled
yarn add @mui/joy @emotion/react @emotion/styled
CsSVarsProvider
는 테마 입력(또는 기본 테마)을 읽고 테마 구조에 따라 CSS 변수를 생성하며, 생성된 CSS 변수를 theme.vars
로 참조하는 객체를 생성하여 자바스크립트 테마 객체에서 사용할 수 있도록 합니다.
theme.vars
는 Joy UI가 제공하는 모든 스타일링 API에서 사용할 수 있습니다:
// 1. styled function
const Div = styled('div')(({ theme }) => ({
color: theme.vars.palette.primary[500], // var(--joy-palette-primary-500)
}));
// 2. sx prop
<Chip sx={(theme) => ({ boxShadow: theme.vars.shadow.sm })} /> // var(--joy-shadow-sm)
// 3. style overrides
extendTheme({
components: {
JoyButton: {
root: ({ theme }) => ({
fontFamily: theme.vars.fontFamily.display, // var(--joy-fontFamily-display)
}),
},
},
});
sx
prop 내부에서 short-hand 구문을 사용할 때 Joy UI는 theme.vars.*
의 값을 해결하려고 합니다. .
표기법을 사용하여 객체의 값을 얻을 수 있습니다.
<Chip
sx={{
border: '1px solid',
// lookup from `theme.vars.palette`
borderColor: 'neutral.400', // 'var(--joy-palette-neutral-400)'
// lookup from `theme.vars.shadow`
shadow: 'sm', // 'var(--joy-shadow-sm)'
// lookup from `theme.vars.fontSize`
fontSize: 'sm', // 'var(--joy-fontSize-sm)'
}}
/>
기본적으로 생성된 CSS 변수에는 joy
가 접두사로 붙습니다.
접두사를 다른 것으로 변경하려면 extendTheme
에 cssVarPrefix
를 제공합니다:
<CssVarsProvider theme={extendTheme({ cssVarPrefix: 'company' })} />
- --joy-fontSize-md: 1rem;
+ --company-fontSize-md: 1rem;
extendTheme({ cssVarPrefix: '' })
- --joy-fontSize-md: 1rem;
+ --fontSize-md: 1rem;
yarn add @mui/base
yarn add @mui/system @emotion/react @emotion/styled