CSS Usage CSS 변수를 사용하여 디자인 토큰 활용하기
CSS 파일을 import하면 모든 디자인 토큰이 CSS 변수로 :root에 등록됩니다. JavaScript 없이도 순수 CSS로 스타일링할 수 있습니다.
앱 진입점에서 Preset CSS를 import합니다. Preset 하나로 Reset, Normalize, 브랜드 토큰, CSS Layer 순서가 모두 설정됩니다.
// _app.tsx, main.tsx, 또는 layout.tsx
import '@featuring-corp/components/preset/featuring' ;
// _app.tsx, main.tsx, 또는 layout.tsx
import '@featuring-corp/components/preset/dataEffect' ;
CSS Cascade Layers : Preset은 ft.reset < ft.normalize < ft.components < ft.utilities 레이어 순서를 선언합니다. $css prop의 유틸리티 스타일이 컴포넌트 기본 스타일보다 우선하며, 소비자 CSS는 레이어에 속하지 않으므로 항상 디자인 시스템 스타일보다 우선합니다.
.my-card {
/* 배경색 */
background-color : var ( --semantic-color-background-1 );
/* 테두리 */
border : 1 px solid var ( --semantic-color-border-default );
border-radius : var ( --global-radius-200 );
/* 간격 */
padding : var ( --global-spacing-400 );
margin-bottom : var ( --global-spacing-200 );
/* 그림자 */
box-shadow : var ( --global-elevation-4 );
}
.my-card-title {
/* 타이포그래피 */
font-size : var ( --semantic-typography-heading-2-font-size );
font-weight : var ( --semantic-typography-heading-2-font-weight );
line-height : var ( --semantic-typography-heading-2-line-height );
/* 텍스트 색상 */
color : var ( --semantic-color-text-1 );
}
.my-card-description {
font-size : var ( --semantic-typography-body-2-font-size );
color : var ( --semantic-color-text-2 );
}
.primary-button {
background-color : var ( --global-colors-primary-60 );
color : var ( --global-colors-white );
border : none ;
border-radius : var ( --global-radius-100 );
padding : var ( --global-spacing-150 ) var ( --global-spacing-300 );
font-size : var ( --global-typography-fontSize-300 );
font-weight : var ( --global-typography-fontWeight-semiBold );
cursor : pointer ;
transition : background-color 0.2 s ;
}
.primary-button:hover {
background-color : var ( --global-colors-primary-70 );
}
.primary-button:active {
background-color : var ( --global-colors-primary-80 );
}
.primary-button:disabled {
background-color : var ( --semantic-color-toggle-disabled-bg );
color : var ( --semantic-color-toggle-disabled-text );
cursor : not-allowed ;
}
.success-message {
background-color : var ( --semantic-color-support-success-4 );
border : 1 px solid var ( --semantic-color-support-success-1 );
color : var ( --semantic-color-support-success-1 );
padding : var ( --global-spacing-200 ) var ( --global-spacing-300 );
border-radius : var ( --global-radius-100 );
}
.error-message {
background-color : var ( --semantic-color-support-error-4 );
border : 1 px solid var ( --semantic-color-support-error-1 );
color : var ( --semantic-color-support-error-1 );
padding : var ( --global-spacing-200 ) var ( --global-spacing-300 );
border-radius : var ( --global-radius-100 );
}
.warning-message {
background-color : var ( --global-colors-yellow-10 );
border : 1 px solid var ( --semantic-color-support-warning-1 );
color : var ( --semantic-color-support-warning-1 );
padding : var ( --global-spacing-200 ) var ( --global-spacing-300 );
border-radius : var ( --global-radius-100 );
}
변수명 Featuring DataEffect --global-colors-primary-10#ecefff#edf5ff--global-colors-primary-20#dce2ff#d0e2ff--global-colors-primary-30#c0c8ff#a6c8ff--global-colors-primary-40#9aa3ff#4c9aff--global-colors-primary-50#7273ff#2684ff--global-colors-primary-60#5e51ff#0065ff--global-colors-primary-70#5032f9#0052cc--global-colors-primary-80#3821b2#0747a6--global-colors-primary-90#31238c#001d6c--global-colors-primary-100#1f1551#001141
변수명 값 --global-colors-gray-5#fafafa--global-colors-gray-10#f6f6f6--global-colors-gray-20#ebebeb--global-colors-gray-30#e0e0e0--global-colors-gray-40#d2d2d2--global-colors-gray-50#bbbbbb--global-colors-gray-60#959595--global-colors-gray-70#707070--global-colors-gray-80#424242--global-colors-gray-90#242424--global-colors-white#ffffff--global-colors-black#000000
더 많은 색상 변수는 Colors 문서 를 참조하세요.
변수명 값 --global-spacing-00--global-spacing-250.0625rem--global-spacing-500.125rem--global-spacing-1000.25rem--global-spacing-1500.375rem--global-spacing-2000.5rem--global-spacing-2500.625rem--global-spacing-3000.75rem--global-spacing-4001rem--global-spacing-5001.25rem--global-spacing-6001.5rem--global-spacing-8002rem--global-spacing-10002.5rem--global-spacing-12003rem--global-spacing-16004rem--global-spacing-20005rem
변수명 값 --global-radius-502px--global-radius-1004px--global-radius-2008px--global-radius-30012px--global-radius-40016px--global-radius-full999px
변수명 설명 --global-elevation-2미세한 그림자 (2dp) --global-elevation-4카드 그림자 (4dp) --global-elevation-8팝오버 그림자 (8dp) --global-elevation-16드롭다운 그림자 (16dp) --global-elevation-28모달 그림자 (28dp) --global-elevation-64최상위 그림자 (64dp)
변수명 font-size font-weight line-height --semantic-typography-heading-1-*0.75rem 500 1.125rem --semantic-typography-heading-2-*0.875rem 500 1.375rem --semantic-typography-heading-3-*1rem 500 1.5rem --semantic-typography-heading-4-*1.25rem 500 1.75rem --semantic-typography-heading-5-*1.5rem 500 2.125rem --semantic-typography-heading-6-*2rem 500 2.5rem --semantic-typography-heading-7-*2.5rem 500 3.25rem
변수명 font-size font-weight line-height --semantic-typography-body-1-*0.75rem 400 1.125rem --semantic-typography-body-2-*0.875rem 400 1.375rem --semantic-typography-body-3-*1rem 400 1.5rem --semantic-typography-body-4-*1.125rem 400 1.625rem
변수명 font-size font-weight line-height --semantic-typography-caption-1-*0.6875rem 400 1rem --semantic-typography-caption-2-*0.75rem 400 1.125rem
변수명 용도 --semantic-color-background-1기본 배경 (white) --semantic-color-background-2보조 배경 (gray-5) --semantic-color-background-3강조 배경 (gray-10) --semantic-color-background-4최상위 배경 (gray-20)
변수명 용도 --semantic-color-border-default기본 테두리 (gray-15) --semantic-color-border-1테두리 1 (gray-30) --semantic-color-border-2테두리 2 (gray-40) --semantic-color-border-3테두리 3 (gray-50) --semantic-color-border-4진한 테두리 (gray-60)
변수명 용도 --semantic-color-text-1기본 텍스트 (gray-90) --semantic-color-text-2보조 텍스트 (gray-80) --semantic-color-text-3비활성 텍스트 (gray-70) --semantic-color-text-4플레이스홀더 (gray-60) --semantic-color-text-5연한 텍스트 (gray-50) --semantic-color-text-6반전 텍스트 (white)
변수명 용도 --semantic-color-support-error-1에러 연한 (red-10) --semantic-color-support-error-2에러 (red-20) --semantic-color-support-error-3에러 강조 (red-50) --semantic-color-support-error-4에러 진한 (red-100) --semantic-color-support-warning-1경고 연한 (orange-10) --semantic-color-support-warning-2경고 (orange-20) --semantic-color-support-warning-3경고 강조 (orange-50) --semantic-color-support-warning-4경고 진한 (orange-100) --semantic-color-support-success-1성공 연한 (green-10) --semantic-color-support-success-2성공 (green-20) --semantic-color-support-success-3성공 강조 (green-50) --semantic-color-support-success-4성공 진한 (green-100) --semantic-color-support-info-1정보 연한 (primary-10) --semantic-color-support-info-2정보 (primary-20) --semantic-color-support-info-3정보 강조 (primary-60) --semantic-color-support-info-4정보 진한 (primary-100)