Files
aurora-admin/tests/tag.html
T

140 lines
7.6 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>tag — 测试页</title>
<link rel="stylesheet" href="../.design_library/aurora-admin/colors_and_type.css">
<link rel="stylesheet" href="../site/style.css">
<style>
/* 测试页独立样式 */
body { margin: 0; font-family: var(--au-font-family); color: var(--au-color-text-body); background: var(--au-color-page-bg); }
.t-shell { max-width: 1200px; margin: 0 auto; padding: 24px; }
.t-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; flex-wrap: wrap; gap: 12px; }
.t-head h1 { margin: 0; font-size: 22px; color: var(--au-color-text-title); }
.t-head h1 .en { font-family: var(--au-font-family-num); font-size: 14px; color: var(--au-color-text-secondary); margin-left: 8px; }
.t-nav { display: flex; gap: 8px; }
.t-btn { height: 30px; padding: 0 12px; border-radius: var(--au-radius-base); border: 1px solid var(--au-color-border); background: var(--au-color-card-bg); color: var(--au-color-text-body); font-size: 13px; cursor: pointer; text-decoration: none; display: inline-flex; align-items: center; gap: 4px; }
.t-btn:hover { border-color: var(--au-color-brand); color: var(--au-color-brand); }
.t-btn.primary { background: var(--au-color-brand); border-color: var(--au-color-brand); color: var(--au-color-text-inverse); }
.t-btn.primary:hover { background: var(--au-color-brand-hover); color: var(--au-color-text-inverse); }
.t-section { background: var(--au-color-card-bg); border: 1px solid var(--au-color-border); border-radius: var(--au-radius-large); padding: 20px; margin-bottom: 20px; }
.t-section h2 { font-size: 16px; margin: 0 0 12px; color: var(--au-color-text-title); }
.t-section .desc { color: var(--au-color-text-secondary); font-size: 13px; margin: 0 0 12px; }
.t-summary { display: flex; gap: 12px; align-items: center; }
.t-pill { display: inline-flex; align-items: center; gap: 4px; height: 22px; padding: 0 10px; border-radius: var(--au-radius-small); font-size: 12px; background: var(--au-color-table-header-bg); color: var(--au-color-text-secondary); font-family: var(--au-font-family-num); }
.t-pill.pass { background: rgba(82,196,26,.12); color: var(--au-color-success); }
.t-pill.fail { background: rgba(245,34,45,.12); color: var(--au-color-error); }
.t-pill.skip { background: var(--au-color-table-header-bg); color: var(--au-color-text-placeholder); }
.t-list { display: flex; flex-direction: column; gap: 6px; }
.t-row { display: flex; align-items: center; gap: 10px; padding: 6px 10px; border: 1px solid var(--au-color-border); border-radius: var(--au-radius-base); font-size: 13px; }
.t-row .id { font-family: var(--au-font-family-num); color: var(--au-color-text-secondary); flex: 1; word-break: break-all; }
.t-row .ms { font-family: var(--au-font-family-num); color: var(--au-color-text-placeholder); font-size: 12px; }
.t-row .err { color: var(--au-color-error); font-size: 12px; margin-left: 8px; }
[data-assert] { outline: 2px dashed transparent; transition: outline-color .15s; }
[data-assert][data-status="pass"] { outline-color: rgba(82,196,26,.45); }
[data-assert][data-status="fail"] { outline-color: rgba(245,34,45,.55); }
[data-assert][data-status="skip"] { outline-color: rgba(140,140,140,.4); }
.t-fab { position: fixed; right: 24px; bottom: 24px; display: flex; flex-direction: column; gap: 8px; z-index: 100; }
.t-fab .t-btn { box-shadow: var(--au-shadow-medium); }
.t-toast { position: fixed; top: 24px; right: 24px; z-index: 200; padding: 8px 14px; background: var(--au-color-text-title); color: var(--au-color-text-inverse); border-radius: var(--au-radius-base); font-size: 13px; opacity: 0; transition: opacity .2s; pointer-events: none; }
.t-toast.show { opacity: 1; }
</style>
</head>
<body>
<div class="t-shell">
<div class="t-head">
<h1>标签<span class="en">tag</span></h1>
<div class="t-nav">
<a class="t-btn" href="../site/index.html#/component/tag" target="_blank">← 文档站</a>
<button id="run-asserts" class="t-btn primary" type="button">运行断言</button>
<button id="export-log" class="t-btn" type="button">导出日志</button>
<button id="clear-log" class="t-btn" type="button">清空日志</button>
</div>
</div>
<div class="t-section">
<h2>渲染快照</h2>
<p class="desc">以下 DOM 是组件主用例的静态快照,每个用例标注 <code>data-assert="&lt;id&gt;"</code>,点击「运行断言」后会写入 <code>data-status</code>。</p>
<div id="snapshot">
<!-- 渲染快照由生成器写入 -->
<div class="demo">
<h1>Aurora Admin · Tag 组件(纯 H5)</h1>
<p class="sub">对齐设计令牌:bg #F0F5FF / color #2F54EB / 圆角 2px / padding 1px 8px</p>
<div class="demo-block">
<p class="hint">预设状态</p>
<div class="row">
<span class="aa-tag">品牌标签</span>
<span class="aa-tag aa-tag-green">成功</span>
<span class="aa-tag aa-tag-red">错误</span>
<span class="aa-tag aa-tag-orange">警告</span>
<span class="aa-tag aa-tag-gray">默认</span>
</div>
</div>
<div class="demo-block">
<p class="hint">带圆点</p>
<div class="row">
<span class="aa-tag aa-tag-dot">在线</span>
<span class="aa-tag aa-tag-green aa-tag-dot">已发布</span>
<span class="aa-tag aa-tag-red aa-tag-dot">异常</span>
</div>
</div>
<div class="demo-block">
<p class="hint">可关闭(点击 × 移除)</p>
<div class="row" id="tag-list">
<span class="aa-tag">前端 <i class="aa-tag-close">×</i></span>
<span class="aa-tag">后端 <i class="aa-tag-close">×</i></span>
<span class="aa-tag aa-tag-green">设计 <i class="aa-tag-close">×</i></span>
</div>
</div>
<div class="demo-block">
<p class="hint">自定义颜色</p>
<div class="row">
<span class="aa-tag aa-tag-custom" ...
</div>
</div>
<div class="t-section">
<h2>断言结果</h2>
<div class="t-summary">
<span class="t-pill" id="sum-total">总数 0</span>
<span class="t-pill pass" id="sum-pass">通过 0</span>
<span class="t-pill fail" id="sum-fail">失败 0</span>
<span class="t-pill skip" id="sum-skip">跳过 0</span>
<span class="t-pill" id="sum-ms">耗时 0 ms</span>
</div>
<ul class="t-list" id="result-list" style="margin-top: 12px; list-style: none; padding: 0;"></ul>
</div>
<div class="t-section">
<h2>通用测试矩阵(自动断言)</h2>
<p class="desc">以下 8 项检查在「运行断言」时同时跑:默认态、变体覆盖、状态可达、键盘可达、焦点环、ARIA 属性、对比度、token 一致性。</p>
<ol style="margin: 0; padding-left: 18px; color: var(--au-color-text-body); font-size: 13px; line-height: 22px;">
<li>默认态渲染:核心节点齐全</li>
<li>尺寸/类型变体:≥2 尺寸 或 ≥2 类型</li>
<li>状态覆盖:default / hover / focus / disabled / loading 至少出现 3 个</li>
<li>键盘可达:可聚焦元素具备 tabindex 或原生 button/a</li>
<li>焦点环可视:focus-visible 描边不被覆盖(脚本检查 stylesheet)</li>
<li>ARIA 属性:交互节点具备 role 或 aria-*</li>
<li>对比度:主要文本颜色与背景对比度 ≥ 4.5:1</li>
<li>token 一致性:未出现硬编码 hex 颜色 / 像素值</li>
</ol>
</div>
</div>
<div class="t-fab">
<button id="export-log-2" class="t-btn" type="button" title="下载 JSON">导出</button>
</div>
<div id="toast" class="t-toast">已导出 ✓</div>
<script src="../site/logger.js"></script>
<script>window.__SLUG__ = "tag";</script>
<script src="../tests/_runtime.js"></script>
</body>
</html>