ui-design-system.html 7.35 KB
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" /><meta name="viewport" content="width=device-width,initial-scale=1" />
<title>视觉设计语言 · LemonBoss PRD</title>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,300;9..144,500;9..144,700&family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="assets/shell.css" />
</head>
<body data-page="ui-design-system.html">
<div class="shell">
  <aside id="sidebar"></aside>
  <main class="page">
    <header class="page-head">
      <div class="crumb"><span class="pill">07 · UI</span><span class="sep">/</span><span>视觉设计语言</span></div>
      <h1>视觉设计语言</h1>
      <p class="deck">学院派文档 + Console 的混合气质:暖白纸面(PRD 阅读感),JetBrains Mono 装饰运行时数据(开发者熟悉),Fraunces 处理标题(克制的庄重)。</p>
    </header>
    <article class="body">

      <section>
        <h2>色板</h2>

        <h3>Loop 三主色</h3>
        <div class="grid-3">
          <div class="card">
            <h4>L1 · Unit</h4>
            <svg viewBox="0 0 100 60" width="100%"><rect width="100" height="60" fill="#0E8C5A"/></svg>
            <p class="sig"><code>#0E8C5A</code> · emerald<br/>tint: <code>#E2F2EA</code></p>
          </div>
          <div class="card">
            <h4>L2 · Integration</h4>
            <svg viewBox="0 0 100 60" width="100%"><rect width="100" height="60" fill="#C77C2C"/></svg>
            <p class="sig"><code>#C77C2C</code> · amber<br/>tint: <code>#F7E8D2</code></p>
          </div>
          <div class="card">
            <h4>L3 · Human</h4>
            <svg viewBox="0 0 100 60" width="100%"><rect width="100" height="60" fill="#6E48C3"/></svg>
            <p class="sig"><code>#6E48C3</code> · violet<br/>tint: <code>#ECE4FB</code></p>
          </div>
        </div>

        <h3>语义辅助色</h3>
        <div class="grid-4">
          <div class="card">
            <h4>Alert</h4>
            <svg viewBox="0 0 100 60" width="100%"><rect width="100" height="60" fill="#C7341A"/></svg>
            <p class="sig"><code>#C7341A</code> · 错误 / failure / blocked</p>
          </div>
          <div class="card">
            <h4>Warn</h4>
            <svg viewBox="0 0 100 60" width="100%"><rect width="100" height="60" fill="#8a6b00"/></svg>
            <p class="sig"><code>#8a6b00</code> · testing / retry</p>
          </div>
          <div class="card">
            <h4>Ink</h4>
            <svg viewBox="0 0 100 60" width="100%"><rect width="100" height="60" fill="#0E0E10"/></svg>
            <p class="sig"><code>#0E0E10</code> · 文字 / 边框</p>
          </div>
          <div class="card">
            <h4>Paper</h4>
            <svg viewBox="0 0 100 60" width="100%"><rect width="100" height="60" fill="#FAF7F1" stroke="#dcd5c4"/></svg>
            <p class="sig"><code>#FAF7F1</code> · 背景</p>
          </div>
        </div>
      </section>

      <section>
        <h2>字体阶梯</h2>
        <table>
          <thead><tr><th>角色</th><th>字体</th><th>字号</th><th>用途</th></tr></thead>
          <tbody>
            <tr><td>Display</td><td>Fraunces 300</td><td>34–56 px</td><td>页面 Hero / 项目名</td></tr>
            <tr><td>H2</td><td>Fraunces 500</td><td>24–34 px</td><td>章节标题</td></tr>
            <tr><td>H3</td><td>Fraunces 600</td><td>20 px</td><td>子标题</td></tr>
            <tr><td>H4 / Tag</td><td>Inter 700 · uppercase</td><td>11–13 px</td><td>类别标签</td></tr>
            <tr><td>Body</td><td>Inter 400</td><td>16 px</td><td>正文</td></tr>
            <tr><td>Mono</td><td>JetBrains Mono 500</td><td>11–13 px</td><td>状态码 / API / 日志 / kbd</td></tr>
          </tbody>
        </table>

        <h3>字体使用规则</h3>
        <ul>
          <li>所有<b>装饰性 / 表意性</b>的文字(标题、品牌名、Hero)→ Fraunces。</li>
          <li>所有<b>运行时数据 / 技术标识</b>(状态、API、命令、Unit id)→ JetBrains Mono。两者并用能立刻区分「这是设计」vs「这是状态」。</li>
          <li>其他 → Inter。</li>
        </ul>
      </section>

      <section>
        <h2>排版规则</h2>
        <div class="grid-3">
          <div class="card">
            <h4>纸面节奏</h4>
            <p>章节顶部用 <code>h4</code> 全大写小标签 (类似 Section 01) 作为定位锚。<br/>正文段落首字 dropcap 仅在长篇章节用,强调起势。</p>
          </div>
          <div class="card">
            <h4>表格</h4>
            <p>表头 paper-soft 背景 + Mono uppercase;行 hover 高亮;行内 <code>code</code> 用米色背景区分纯文本。</p>
          </div>
          <div class="card">
            <h4>代码块</h4>
            <p>黑底 #0E0E10 + 米色 #F3EFE5 文字。彩色 token:橙 (k)、绿 (s)、蓝 (n)、黄 (p)。终端感不夸张。</p>
          </div>
        </div>
      </section>

      <section>
        <h2>组件目录</h2>
        <p>本 PRD HTML 文档中复用的核心组件,全部 token 化、可在 LemonBoss 前端 Dashboard 中复刻:</p>
        <table class="dense">
          <thead><tr><th>组件</th><th>CSS class</th><th>变体</th></tr></thead>
          <tbody>
            <tr><td>Tag pill</td><td><code>.tag</code></td><td>L1 / L2 / L3 / NEW / REUSE / PATCH</td></tr>
            <tr><td>Card</td><td><code>.card</code></td><td>.l1 / .l2 / .l3 边色</td></tr>
            <tr><td>Callout</td><td><code>.callout</code></td><td>默认(红) / .warn(黄) / .ok(绿)</td></tr>
            <tr><td>Code block</td><td><code>pre.code</code></td><td>含 <code>.k</code> <code>.s</code> <code>.n</code> <code>.p</code> <code>.v</code> token</td></tr>
            <tr><td>File tree</td><td><code>pre.tree</code></td><td>含 <code>.new</code> <code>.reuse</code> <code>.com</code></td></tr>
            <tr><td>Tabs</td><td><code>.tabs</code></td><td>data-tabs 自动初始化</td></tr>
            <tr><td>Accordion</td><td><code>details.acc</code></td><td>原生 details + 自定义 marker</td></tr>
            <tr><td>Mock browser</td><td><code>.mock</code></td><td>含 .topbar + .url</td></tr>
            <tr><td>Sidebar</td><td><code>aside.sidebar</code></td><td>Section group 折叠</td></tr>
          </tbody>
        </table>
      </section>

      <section>
        <h2>留白与节奏</h2>
        <p>页面布局基于 8px 网格。常用间距:</p>
        <table class="dense">
          <thead><tr><th>token</th><th>px</th><th>用途</th></tr></thead>
          <tbody>
            <tr><td>xs</td><td>8</td><td>tag 内距</td></tr>
            <tr><td>sm</td><td>16</td><td>段间距</td></tr>
            <tr><td>md</td><td>24</td><td>卡片内距</td></tr>
            <tr><td>lg</td><td>40</td><td>section 间距</td></tr>
            <tr><td>xl</td><td>64</td><td>页边</td></tr>
            <tr><td>xxl</td><td>80</td><td>Hero 上下</td></tr>
          </tbody>
        </table>
      </section>

    </article>
    <nav class="prev-next"></nav>
    <footer class="site"><div><b>Section</b>07 · UI</div><div><b>Page</b>ui-design-system.html</div></footer>
  </main>
</div>
<script src="assets/shell.js"></script>
</body>
</html>