feat(B01): 대시보드 셸 마무리 — 메뉴 배지 · 알림 수 · 사용자 메뉴 테마 줄 (546-2)

- 메뉴 배지 = 가입 요청(빨강) · 받은 예정노선 미연결 · 업데이트(빨강) · 임시 보관함 묶음 수 — 페이지 바뀔 때마다 다시 셈
- 알림 종 = 처리할 일 수(가입 요청 + 새 예정노선 + 보관함 만료 7 일 안) · 누르면 홈
- 사용자 메뉴 테마 줄 = 바꾼 뒤 반대 화면 이름으로 다시 씀
- 셸 안 글 색 변수(--color-text 등)도 셸 색으로 — 어두운 화면 제목 보라 빠짐
- 시험 test_546_b01_shell 배지 · 레일 · ☰ 걷음 단정 더함

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-26 18:12:33 +09:00
co-authored by Claude Opus 5.5
parent e505f4014d
commit 0ab85ec3b3
3 changed files with 76 additions and 9 deletions
+13
View File
@@ -104,3 +104,16 @@ def test_셸_한_벌():
assert ':root[data-theme="dark"] .b01-shell {' in css
icons = _text(ROOT / "ui_template" / "ui_template_icons.ts")
assert "MIT License" in icons and "Paweł Kuna" in icons
def test_메뉴_배지_알림():
shell = _text(B01 / "B01_Dashboard_UI_Shell.ts")
badges = shell.split("async function refreshBadges")[1].split("\n}\n")[0]
assert 'nav.setBadge("people", joins.length, true);' in badges # 가입 요청 = 빨강
assert "!p.linked_project_id || p.update_available" in badges # 받은 예정노선 새로 · 업데이트
assert 'nav.setBadge("temp", temp.length);' in badges
assert "const todo = joins.length + newPlans + expiring;" in badges # 알림 = 처리할 일 합
assert "void refreshBadges(ctx, nav, bell);" in shell # 페이지 바뀔 때마다 다시 셈
css = _text(B01 / "B01_Dashboard_UI_Style_Shell.css")
assert "@media (max-width: 1024px)" in css # 작은 화면 = 아이콘 레일
assert "html:has(.b01-shell) .app-header" in css # 옛 ☰ 걷음