state pipeline
선택값은 하나, 적용 경로는 세 갈래
저장값, 시스템 기본값, 사용자 토글이 Provider에서 한 번만 합쳐진다.
theme, resolvedTheme,
setTheme을 함께 관리한다.
light
dark
system
hydration 전에는 저장값을 읽고, 렌더 뒤에는 root 속성과 저장소를
같은 방향으로 갱신한다.
token proof
테마는 색 이름이 아니라 대비 계약이다
같은 컴포넌트가 light, dark, accent 표면에서 읽히는지 확인한다.
Light surface
text / surface / border token
검증
root가 light일 때 저장값과 버튼 상태가 일치
Dark surface
contrast remains readable
검증
하드코딩 검정/회색이 섞여 흐려지지 않는지 확인
Accent surface
track color is still React cyan
검증
강조색은 트랙 테마를 유지하고 상태색과 구분
regression loop
새로고침부터 대비까지 한 줄로 검증
테마 문제는 상태, 저장, CSS, 접근성 중 한 곳에서 끊긴다.
theme은 사용자의 의도, resolvedTheme은
실제 색상이다.