Files
SheetMe/src/SheetMe.Designer/Themes/Tokens.Dark.xaml
T
MsystechandClaude Opus 5 a5083fd0bb 인스펙터 리디자인 — 목업대로
우측 속성 패널을 [200] 인스펙터 목업에 맞췄다. 바뀐 것 여섯.

· 탭이 알약에서 밑줄로. 알약은 '고르는 필터'로 읽히는데 탭은 화면을 가르는 것이지 값이 아니다.
  좌측 패널 탭 스타일을 재사용할 수 없었다 — 저쪽은 TabControl 의 키 없는 암시 스타일이고
  템플릿 안에 알약 컨테이너가 박혀 있어 고치면 레이어·팔레트 패널이 통째로 바뀐다.
  미선택도 밑줄 두께 2 를 Transparent 로 잡아 둔다. 안 그러면 고르는 순간 글자가 2px 튄다.
  밑줄과 글자는 같은 토큰(B.AccentText)이다 — B.Accent 는 라이트에서 3.0:1 이라 글자로 못 쓴다.

· 탭 배지를 뺐다. 잃는 게 없다: 개수가 0 인 탭은 RefreshTabCounts 가 탭 자체를 접으므로
  배지가 "0"을 보여 줄 기회가 애초에 없고, 누르기 전에 정확한 개수를 알아야 할 작업이 없다.
  DesignCount/DataCount/BehaviorCount 는 남긴다 — ShowDataTab/ShowBehaviorTab 이 그걸 물고 있다.

· 제목 줄이 생겼다. 타입 아이콘 + 이름 + ⋮. 무엇을 편집 중인지 아이콘으로 즉시 읽힌다.
  타입은 툴팁으로 보냈다(Summary 가 "TextBox — TextBox1" 형태로 이미 그 말을 한다).
  여럿을 골랐어도 타입이 같으면 그 타입 아이콘을 쓴다.

· 참/거짓이 체크박스에서 스위치로. 17px 사각형이 목록 오른쪽에 흩어져 정렬 축이 없었다.
  손잡이는 켬·끔 모두 흰색이다 — 색이 아니라 위치가 상태를 말하게 한다.
  불확정(다중선택 값 불일치)은 가운데다. 꺼짐으로 보이면 조용한 덮어쓰기 사고가 된다.
  미끄러지지 않고 튄다: 이 저장소에는 Storyboard 가 한 곳도 없어 여기만 움직이면 물성이 달라진다.
  ToggleButton 을 유지했으므로 스크린리더가 On/Off/Indeterminate 를 그대로 읽는다.

· 섹션 머리 — 위쪽에 구분선(아래에 그으면 마지막 섹션 밑에 뜬 선이 남는다), 제목을 B.Ink 로 승격,
  개수는 접혔을 때만. 펼쳤으면 개수는 바로 아래가 답이라 잡음이다.
  목업의 오른쪽 ⌃ 는 안 그린다 — 왼쪽 셰브론이 이미 같은 상태를 말하는데 한 행에 같은 정보를
  두 번 그리면 둘이 다른 뜻이라고 읽힌다.

· 라벨 폭 92 → 72, 세그먼트는 가로 꽉. 목업의 56 은 못 준다 — 목업에 없는 데이터·동작 탭에
  11자 라벨("입력 파라미터 컨트롤")이 있고 56 이면 3줄로 접힌다. 72 가 2줄을 지키는 최소값이다.
  줄어든 20px 은 그대로 입력 칸으로 갔다(121 → 141). 태그 제안 칩의 하드코딩 들여쓰기도 같이 옮겼다.

목업에 있지만 넣지 않은 것 둘. 회전 행과 그 옆 자물쇠 — Rotation/Angle 이 Core·레지스트리 전부
0건이다. 레거시 WinForms 컨트롤에 회전이 없다. 모델부터 새로 만들 신규 기능이지 리스킨이 아니다.
자물쇠도 종횡비 잠금이 없는 기능이고, 레이어 잠금과 같은 아이콘을 쓰면 오해가 확정된다.
'자동 줄바꿈'은 그 키가 레지스트리에 없어 실제 키인 '자동 높이'로 둔다.

'선택 정보' 탭은 만들지 않기로 했다(사용자 결정). 탭은 3개 그대로, 밑줄 스타일만 입혔다.
정렬 행은 디자인 탭 상단에 그대로 둔다 — 목업이 그려진 시점보다 나중에 생긴 기능이라
목업의 부재는 '빼라'는 뜻이 아니다.

새 토큰 B.SwitchOff 를 양 테마에 넣었다. 기존 토큰으로는 못 만든다 —
B.Input 은 라이트에서 패널과 같은 색이고, 다크는 입력 테두리가 Transparent 라
36x20 알약이 #262626#151515 = 1.23:1 로 사라진다. 비텍스트 3:1 을 넘긴 값으로 골랐다.
아이콘 ellipsis-vertical / file-text 2종 추가.

게이트: 테스트 267/267, --edit-smoke 237건 0실패, --query-popup 17/17, --maxrect 10/10,
--db-smoke 3000 diff 0·예외 0, --db-render P062 md5 8d683835f5d81e7bb41c79071d6bf954 동일,
--dialog-shots 57파일(인스펙터 스냅샷은 전부 바뀐다 — 이번 변경의 산출물이다).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-14 11:07:06 +09:00

103 lines
7.4 KiB
XML

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<!-- ============================================================
디자이너 다크 토큰 (Framer 다크 팔레트, framer.com 에디터 기준)
· DesignerTheme.xaml 의 스타일이 {DynamicResource B.*} 로 참조
· 라이트 대응본 = Tokens.Light.xaml (동일 키)
============================================================ -->
<!-- 색상 토큰 -->
<SolidColorBrush x:Key="B.Ink" Color="#EDEDED" />
<SolidColorBrush x:Key="B.Muted" Color="#969696" />
<SolidColorBrush x:Key="B.Line" Color="#272727" />
<SolidColorBrush x:Key="B.Line2" Color="#383838" />
<SolidColorBrush x:Key="B.Accent" Color="#0099FF" /><!-- 브랜드색 — 아이콘·테두리·강조선 -->
<!-- 강조'글자' — 다크는 어두운 배경이라 브랜드색 그대로가 6.09:1 로 충분하다(라이트만 짙게 간다) -->
<SolidColorBrush x:Key="B.AccentText" Color="#0099FF" />
<!-- 강조 채움(Primary 버튼) — 흰 글자를 얹으므로 양 테마 동일하게 짙은 값(5.19:1).
브랜드색 #0099FF 위 흰 글자는 3.0:1 로 본문 기준 미달이다. -->
<SolidColorBrush x:Key="B.AccentFill" Color="#0F6FBF" />
<!--
레이어 목록 전용 3종 — 선택 행이 '채워진 파란 밴드'가 되는 [200] 룩.
브랜드색 #0099FF 를 그대로 채우면 흰 글자가 3.00:1(본문 4.5:1 미달)이라
B.AccentFill 과 같은 짙은 값을 쓴다. 키를 나눠 둔 건 나중에 갈라칠 여지를 남기려는 것.
-->
<SolidColorBrush x:Key="B.LayerSel" Color="#0F6FBF" />
<!-- 그룹 전원 선택 시 멤버 행 배경. [200] 원본 #14283A 는 B.Hover 대비 1.03:1 로 밴드가 안 읽힌다 -->
<SolidColorBrush x:Key="B.LayerSubtree" Color="#16304A" />
<!-- 선택 밴드 위 글자 — 다크는 짙은 채움이라 흰색(라이트는 반대로 진한 글자를 쓴다) -->
<SolidColorBrush x:Key="B.OnLayerSel" Color="#FFFFFF" />
<!-- 선택 밴드 위 보조 텍스트(컨트롤 이름 둘째 줄·멤버 수). B.Muted 는 #0F6FBF 위 1.75:1 로 사라진다 -->
<SolidColorBrush x:Key="B.OnSelMuted" Color="#E6F1FB" />
<SolidColorBrush x:Key="B.Accent2" Color="#2A2A2A" />
<SolidColorBrush x:Key="B.Sel" Color="#3C3C3C" /><!-- 선택/체크 강조 채움(입력칩 위에서 또렷) -->
<SolidColorBrush x:Key="B.Hover" Color="#242424" />
<SolidColorBrush x:Key="B.AppBg" Color="#0E0E0E" />
<SolidColorBrush x:Key="B.Panel" Color="#151515" />
<SolidColorBrush x:Key="B.PanelHeader" Color="#1C1C1C" />
<SolidColorBrush x:Key="B.Surface" Color="#1C1C1C" />
<SolidColorBrush x:Key="B.Titlebar" Color="#0E0E0E" />
<SolidColorBrush x:Key="B.Input" Color="#262626" />
<SolidColorBrush x:Key="B.InputBorder" Color="Transparent" /><!-- 다크는 입력 테두리 없음(Framer 식 채움만) -->
<SolidColorBrush x:Key="B.CanvasBg" Color="#2A2A2A" />
<SolidColorBrush x:Key="B.Chip" Color="#262626" />
<SolidColorBrush x:Key="B.Success" Color="#4CAF7D" />
<!-- 알림 대화상자 성격색 — B.Surface(#1C1C1C) 위 경고 7.68:1 / 오류 4.21:1.
오류는 B.CloseHover 와 같은 값이라 다크 팔레트에 새 색이 늘지 않는다. -->
<SolidColorBrush x:Key="B.Warning" Color="#E0A33A" />
<SolidColorBrush x:Key="B.Danger" Color="#E04A2B" />
<SolidColorBrush x:Key="B.Ok" Color="#5BC46E" />
<!-- 캔버스 오버레이 — 종이는 양 테마 모두 흰색이라(PageView 의 PaperBrush) 값이 같다.
테마별로 가르면 흰 종이 위 대비가 무너진다. -->
<!-- 스위치 꺼짐 트랙 — 기존 토큰으로는 못 만든다. B.Input 은 라이트에서 패널과 같은 색이고,
다크는 입력 테두리가 Transparent 라 알약이 통째로 사라진다(1.23:1). 비텍스트 3:1 을 넘긴 값이다. -->
<SolidColorBrush x:Key="B.SwitchOff" Color="#666666" />
<SolidColorBrush x:Key="B.CanvasGuide" Color="#F24822" /><!-- 정렬 가이드 -->
<SolidColorBrush x:Key="B.CanvasSpacing" Color="#F24822" /><!-- 간격 균등 막대 -->
<!-- SQL 구문 색 — 어두운 배경 대비 4.5:1 이상 -->
<SolidColorBrush x:Key="B.SqlKeyword" Color="#6FB6F2" />
<SolidColorBrush x:Key="B.SqlFunction" Color="#C89BE8" />
<SolidColorBrush x:Key="B.SqlNumber" Color="#E8A76A" />
<SolidColorBrush x:Key="B.SqlText" Color="#7FC98A" />
<SolidColorBrush x:Key="B.SqlComment" Color="#8A8F98" />
<SolidColorBrush x:Key="B.SqlVariable" Color="#F0A868" />
<!-- 편집기 현재 줄 띠 — 편집 면(B.Surface #1C1C1C)보다 밝아야 띠로 읽힌다 -->
<SolidColorBrush x:Key="B.SqlCurrentLine" Color="#2B2B2B" />
<DropShadowEffect x:Key="B.CardShadow" BlurRadius="10" ShadowDepth="1" Direction="270" Opacity="0.35" Color="Black" RenderingBias="Quality" />
<!-- 강조 채움 버튼의 호버·누름. 흰 글자를 얹으므로 밝히지 않고 어둡게 간다(양 테마 동일값).
이게 없으면 공유 버튼 템플릿의 호버 트리거가 채움을 회색으로 덮어 흰 글자가 사라진다. -->
<SolidColorBrush x:Key="B.AccentFillHover" Color="#0C5B9C" />
<SolidColorBrush x:Key="B.AccentFillPressed" Color="#0A4C83" />
<SolidColorBrush x:Key="B.Dark" Color="#0A0A0A" />
<!-- 트리거/템플릿에서 추출한 토큰(라이트 전환 위해) -->
<SolidColorBrush x:Key="B.BtnHover" Color="#34363C" />
<SolidColorBrush x:Key="B.BtnPressed" Color="#3C3F46" />
<SolidColorBrush x:Key="B.TabHover" Color="#2C2C2C" />
<SolidColorBrush x:Key="B.TabSel" Color="#353535" />
<SolidColorBrush x:Key="B.OnAccent" Color="#FFFFFF" /><!-- 강조 채움 위 글자/체크마크(양 테마 흰색) -->
<SolidColorBrush x:Key="B.ScrollThumb" Color="#454B54" />
<SolidColorBrush x:Key="B.ScrollThumbHover" Color="#646C79" />
<SolidColorBrush x:Key="B.ScrollThumbDrag" Color="#7E8693" />
<SolidColorBrush x:Key="B.CaptionFg" Color="#C7CDD4" />
<SolidColorBrush x:Key="B.CaptionFgHover" Color="#FFFFFF" />
<SolidColorBrush x:Key="B.CaptionHover" Color="#2E3138" />
<SolidColorBrush x:Key="B.CloseHover" Color="#E04A2B" />
<SolidColorBrush x:Key="B.SliderRing" Color="Transparent" /><!-- 다크는 테두리 없음(흰 썸 그대로) -->
<!-- 플로팅 요소(팔레트 바·플라이아웃) 그림자 — 라이트는 흰 배경에 검은 그림자가 튀지 않게 더 넓고 옅게 -->
<DropShadowEffect x:Key="B.FloatShadow" BlurRadius="20" ShadowDepth="3" Direction="315" Opacity="0.5" Color="Black" RenderingBias="Quality" />
<!--
ScrollViewer 우하단 코너 사각형(가로·세로 막대가 동시에 뜰 때 노출)은 프레임워크 템플릿
소속이라 우리 스타일이 닿지 않는다. 템플릿이 이 시스템 키를 DynamicResource 로 읽으므로
키 자체를 덮어써서 테마에 맞춘다 — 안 하면 다크 화면에 밝은 회색(#F0F0F0) 사각형이 박힌다.
-->
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="#151515" />
</ResourceDictionary>