테마
페이지나 영역에 라이트나 다크를 적용하고, 직접 테마를 만듭니다.
원칙
- data-theme으로 테마를 고르세요. 속성이 없으면 시스템 설정을 따르고, <html>에 light나 dark를 두면 그 테마로 고정됩니다.
- 첫 화면을 그리기 전에 테마를 정하세요. 저장한 선택을 쿠키처럼 서버에서 읽어야 다른 테마가 잠깐 비치지 않습니다.
- 범위 테마는 미리보기에만 쓰세요. data-theme 아래에서 토큰이 모두 다시 해석되므로, 끼워 넣은 미리보기에는 맞지만 한 페이지에 테마를 둘 두는 데는 맞지 않습니다.
- 색상과 채도만 바꾸고 밝기는 두세요. 빌더는 단계마다 밝기를 지키므로 글자 대비가 기본 팔레트와 거의 같고, 결과는 대비 보고서에 나옵니다.
- 상태색은 그대로 두세요. 강조색 테마는 주요 작업, 체크된 컨트롤, 진행, 포커스의 색을 바꾸지만, 성공, 위험, 주의는 제 의미를 지킵니다.
테마 선택
data-theme은 <html>에 두거나, 아무 요소에 두어 그 아래에만 테마를 적용하세요. 값은 light 또는 dark입니다.
전환 애니메이션은 모션에서 다룹니다. 선택을 저장하는 일은 앱이 맡습니다.
shadcn/ui
shadcn.css는 --background, --primary, --radius 같은 shadcn/ui 변수를 Surflane 토큰에 연결합니다. 그러면 shadcn 컴포넌트가 범위 영역을 포함한 모든 테마를 따릅니다.
테마 빌더
중립색 톤, 강조색, 모서리 크기를 고르세요. 미리보기, 대비 보고서, 아래 CSS가 고른 값을 따릅니다.
Acme Platformplatform-core
대비 보고서
두 테마의 글자 조합을 글자 최소 기준 4.5:1로 잽니다.
CSS
토큰과 함께 불러오세요. surflane.themes 레이어에 있어 불러오는 순서와 상관없고, 범위 data-theme 영역도 그대로 동작합니다.
프리셋 파일
프리셋마다 파일이 있습니다. 토큰과 함께 중립색, 강조색, 모서리 파일을 골라 불러오세요.
코드로 만드는 테마
createTheme은 직접 정한 입력으로 같은 값을 돌려주고, themeCss는 그 값을 CSS로 바꿉니다.