#!/usr/bin/env python3 """Static layout contract for skill overview report HTML.""" import html from pathlib import Path from typing import Any SCRIPT_INTERFACE = "internal-module" SCRIPT_INTERFACE_REASON = "Imported by render_skill_overview.py to keep overview report layout and CSS out of data rendering." ROOT = Path(__file__).resolve().parent.parent ASSET_DIR = ROOT / "assets" def read_layout_asset(filename: str) -> str: return (ASSET_DIR / filename).read_text(encoding="utf-8").strip() def bi_span(zh: str, en: str) -> str: return ( f'{html.escape(str(zh))}' f'{html.escape(str(en))}' ) def render_report_nav(nav_items: list[dict[str, Any]]) -> str: return "".join( f"{bi_span(str(item['label']), str(item['label_en']))}" for item in nav_items ) def render_language_switch() -> str: return ( '
' '' '' "
" ) def skill_overview_css() -> str: return read_layout_asset("skill-overview.css") def skill_overview_script() -> str: return read_layout_asset("skill-overview.js")