agentcss 0.25.4 → 0.25.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/01-tokens/base.reset.css +99 -0
- package/01-tokens/tokens.core.css +954 -0
- package/02-primitives/combobox/combobox.js +3 -0
- package/02-primitives/date-range/date-range.js +10 -1
- package/02-primitives/popover/popover.js +2 -0
- package/03-patterns/drawer/drawer.js +2 -0
- package/04-recipes/app-shell/shell-nav.js +1 -0
- package/09-assets/model-viewer/model-viewer.js +11 -2
- package/09-assets/scientific-plot/scientific-plot.js +1 -0
- package/CHANGELOG.md +141 -0
- package/CONTRIBUTING.md +4 -3
- package/README.md +20 -3
- package/README.zh-CN.md +41 -16
- package/SECURITY.md +28 -9
- package/START-HERE.md +7 -7
- package/SUPPORT.md +2 -2
- package/ai/components.json +1 -1
- package/dist/01-tokens/base.reset.css +1 -0
- package/dist/01-tokens/tokens.core.css +1 -0
- package/dist/02-primitives/combobox/combobox.js +3 -0
- package/dist/02-primitives/date-range/date-range.js +9 -1
- package/dist/02-primitives/popover/popover.js +1 -0
- package/dist/03-patterns/drawer/drawer.js +1 -0
- package/dist/04-recipes/app-shell/shell-nav.js +1 -0
- package/dist/09-assets/model-viewer/model-viewer.js +9 -2
- package/dist/09-assets/scientific-plot/scientific-plot.js +1 -0
- package/dist/COSTS.md +6 -6
- package/docs/ACCESSIBILITY.md +2 -2
- package/docs/CONVENTIONS.md +18 -6
- package/docs/LAYER-BASELINE.md +2 -2
- package/index.html +1 -1
- package/llms-full.txt +1 -1
- package/package.json +17 -5
|
@@ -146,7 +146,14 @@ return true;
|
|
|
146
146
|
}
|
|
147
147
|
|
|
148
148
|
function paintSummary(s) {
|
|
149
|
-
|
|
149
|
+
|
|
150
|
+
if (!summary) return;
|
|
151
|
+
summary.textContent = '';
|
|
152
|
+
if (!s) return;
|
|
153
|
+
summary.appendChild(document.createTextNode('区间 '));
|
|
154
|
+
var b = document.createElement('b');
|
|
155
|
+
b.textContent = s;
|
|
156
|
+
summary.appendChild(b);
|
|
150
157
|
}
|
|
151
158
|
|
|
152
159
|
function emit() {
|
|
@@ -186,6 +193,7 @@ presets = presets.filter(function (x) { return opt.presets.indexOf(x.key) >= 0;
|
|
|
186
193
|
}
|
|
187
194
|
var box = root.querySelector('[data-dr-presets]');
|
|
188
195
|
if (!box) return;
|
|
196
|
+
|
|
189
197
|
box.innerHTML = presets.map(function (p) {
|
|
190
198
|
return '<button class="drange__preset" type="button" aria-pressed="false" ' +
|
|
191
199
|
'data-dr-preset="'+ p.key + '">' + p.label + '</button>';
|
|
@@ -148,6 +148,7 @@ box.setAttribute('inert', '');
|
|
|
148
148
|
|
|
149
149
|
box.setAttribute('role', 'dialog');
|
|
150
150
|
box.setAttribute('aria-label', opts.label || '');
|
|
151
|
+
|
|
151
152
|
box.innerHTML =
|
|
152
153
|
'<span class="popover__arrow" aria-hidden="true"></span>'+
|
|
153
154
|
'<div class="popover__body">'+ (opts.html || '') + '</div>';
|
|
@@ -75,6 +75,7 @@ btn.type = 'button';
|
|
|
75
75
|
btn.className = 'shell__menu';
|
|
76
76
|
btn.setAttribute('aria-label', o.label || ('打开' + title));
|
|
77
77
|
btn.setAttribute('aria-haspopup', 'dialog');
|
|
78
|
+
|
|
78
79
|
btn.innerHTML = ICON;
|
|
79
80
|
btn.addEventListener('click', function () { self.open(); });
|
|
80
81
|
topbar.insertBefore(btn, topbar.firstChild);
|
|
@@ -68,8 +68,14 @@ this.btn.addEventListener('click', function () { self.load(); });
|
|
|
68
68
|
this.ui.appendChild(this.btn);
|
|
69
69
|
|
|
70
70
|
this.hint = el('p', 'mv__hint');
|
|
71
|
-
|
|
72
|
-
'
|
|
71
|
+
|
|
72
|
+
var fname = el('code', null, this.src.split('/').pop() || '—');
|
|
73
|
+
var strong = el('b', null, '点击后才下载');
|
|
74
|
+
this.hint.appendChild(document.createTextNode('模型 '));
|
|
75
|
+
this.hint.appendChild(fname);
|
|
76
|
+
this.hint.appendChild(document.createTextNode(' 会'));
|
|
77
|
+
this.hint.appendChild(strong);
|
|
78
|
+
this.hint.appendChild(document.createTextNode(',首屏不占流量。'));
|
|
73
79
|
this.ui.appendChild(this.hint);
|
|
74
80
|
|
|
75
81
|
if (!hasWebGL()) {
|
|
@@ -260,6 +266,7 @@ self.raf = requestAnimationFrame(loop);
|
|
|
260
266
|
self.ui.innerHTML = '';
|
|
261
267
|
var cap = el('p', 'mv__cap');
|
|
262
268
|
var dt = Math.round(((window.performance && performance.now) ? performance.now() : Date.now()) - t0);
|
|
269
|
+
|
|
263
270
|
cap.innerHTML = '模型 <b>' + fmtKB(bytes || self.lastBytes || 0) + '</b> · 引擎就绪耗时 <b>' + dt + 'ms</b>' +
|
|
264
271
|
(controls ? ' · 拖动可旋转,滚轮/双指可缩放' : ' · 未加载控制器,无法拖动');
|
|
265
272
|
self.node.appendChild(cap);
|
package/dist/COSTS.md
CHANGED
|
@@ -22,12 +22,12 @@
|
|
|
22
22
|
| primitive | `button` | 2.9 KB | 1.0 KB | — | **3.9 KB** | 28.3 KB | −24.4 KB |
|
|
23
23
|
| primitive | `card` | 2.9 KB | 0.9 KB | — | **3.9 KB** | 26.0 KB | −22.1 KB |
|
|
24
24
|
| primitive | `choice` | 2.9 KB | 1.1 KB | — | **4.1 KB** | 28.1 KB | −24.0 KB |
|
|
25
|
-
| primitive | `combobox` | 2.9 KB | 1.0 KB | 5.
|
|
26
|
-
| primitive | `date-range` | 2.9 KB | 0.8 KB | 2.
|
|
25
|
+
| primitive | `combobox` | 2.9 KB | 1.0 KB | 5.5 KB | **9.4 KB** | 31.5 KB | −22.1 KB |
|
|
26
|
+
| primitive | `date-range` | 2.9 KB | 0.8 KB | 2.6 KB | **6.3 KB** | 28.6 KB | −22.3 KB |
|
|
27
27
|
| primitive | `delta` | 2.9 KB | 0.3 KB | — | **3.2 KB** | 24.7 KB | −21.5 KB |
|
|
28
28
|
| primitive | `input` | 2.9 KB | 1.0 KB | — | **4.0 KB** | 25.8 KB | −21.9 KB |
|
|
29
29
|
| primitive | `metric` | 2.9 KB | 0.5 KB | — | **3.4 KB** | 25.1 KB | −21.7 KB |
|
|
30
|
-
| primitive | `popover` | 2.9 KB | 0.8 KB | 2.2 KB | **5.9 KB** | 29.
|
|
30
|
+
| primitive | `popover` | 2.9 KB | 0.8 KB | 2.2 KB | **5.9 KB** | 29.3 KB | −23.4 KB |
|
|
31
31
|
| primitive | `progress` | 2.9 KB | 0.8 KB | — | **3.7 KB** | 26.2 KB | −22.5 KB |
|
|
32
32
|
| primitive | `select` | 2.9 KB | 0.8 KB | 4.1 KB | **7.9 KB** | 32.9 KB | −24.9 KB |
|
|
33
33
|
| primitive | `separator` | 2.9 KB | 0.2 KB | — | **3.2 KB** | 23.2 KB | −20.0 KB |
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
| primitive | `upload` | 2.9 KB | 1.4 KB | 4.2 KB | **8.5 KB** | 39.3 KB | −30.8 KB |
|
|
38
38
|
| pattern | `accordion` | 2.9 KB | 1.3 KB | 1.8 KB | **6.0 KB** | 36.4 KB | −30.4 KB |
|
|
39
39
|
| pattern | `content` | 2.9 KB | 1.0 KB | — | **4.0 KB** | 26.5 KB | −22.5 KB |
|
|
40
|
-
| pattern | `drawer` | 2.9 KB | 0.8 KB | 2.6 KB | **6.3 KB** | 30.
|
|
40
|
+
| pattern | `drawer` | 2.9 KB | 0.8 KB | 2.6 KB | **6.3 KB** | 30.2 KB | −23.9 KB |
|
|
41
41
|
| pattern | `dropdown` | 2.9 KB | 0.8 KB | 3.5 KB | **7.2 KB** | 31.6 KB | −24.4 KB |
|
|
42
42
|
| pattern | `form-validation` | 2.9 KB | 0.8 KB | — | **3.7 KB** | 26.8 KB | −23.1 KB |
|
|
43
43
|
| pattern | `list` | 2.9 KB | 0.6 KB | — | **3.5 KB** | 24.3 KB | −20.8 KB |
|
|
@@ -52,8 +52,8 @@
|
|
|
52
52
|
|
|
53
53
|
## 三、全库
|
|
54
54
|
|
|
55
|
-
- 全部组件都用上(min,含 tokens 一份):**70.
|
|
56
|
-
- 源码版(带注释)全库 gzip:
|
|
55
|
+
- 全部组件都用上(min,含 tokens 一份):**70.6 KB**
|
|
56
|
+
- 源码版(带注释)全库 gzip:380.1 KB
|
|
57
57
|
|
|
58
58
|
> ⚠️ 源码版那个数字**不是**要付的钱:它包含我们的注释(全库 CSS 有 69% 是注释,字节口径)。
|
|
59
59
|
> 它的用途只有一个 —— 让人看清"dist 到底省了多少"。
|
package/docs/ACCESSIBILITY.md
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
|
|
6
6
|
| 项目 | 值 |
|
|
7
7
|
|---|---|
|
|
8
|
-
| 声明适用版本 | agentcss `0.25.
|
|
9
|
-
| 声明日期 | 2026-11-
|
|
8
|
+
| 声明适用版本 | agentcss `0.25.6` |
|
|
9
|
+
| 声明日期 | 2026-11-04 |
|
|
10
10
|
| 复核节奏 | 每次发版前重跑(`npm run gate` 内含全部证据) |
|
|
11
11
|
| 范围 | 本库交付的 CSS / JS、全部 `demo.html`(组件页 + 图表页 + 组合页)、以及文档站生成的页面 |
|
|
12
12
|
| 不在范围 | 使用者拿这些组件拼出来的业务页面(那是你的无障碍责任,不是库的) |
|
package/docs/CONVENTIONS.md
CHANGED
|
@@ -139,14 +139,26 @@
|
|
|
139
139
|
所以"未分层"是当前唯一安全的选择。`cascade-layer-gate.py` 把这条变成可判状态:
|
|
140
140
|
一旦出现第一条 `@layer`,就要求三条前提的实测记录已落档,否则红。
|
|
141
141
|
|
|
142
|
-
`!important`
|
|
142
|
+
`!important` **每一处都必须能被归类**,归不了类的 ⇒ 红。判据不是"清零" ——
|
|
143
|
+
清零会逼人删掉无障碍兜底。
|
|
143
144
|
|
|
144
|
-
| 类别 |
|
|
145
|
-
|
|
146
|
-
| 无障碍偏好(`prefers-reduced-motion`) |
|
|
147
|
-
| 正确性(`[hidden] { display: none }`) |
|
|
145
|
+
| 类别 | 为什么必须赢 |
|
|
146
|
+
|---|---|
|
|
147
|
+
| 无障碍偏好(`prefers-reduced-motion: reduce`) | 操作系统级偏好,组件无权推翻 |
|
|
148
|
+
| 正确性(`[hidden] { display: none }`) | 不赢就会"藏不住" |
|
|
149
|
+
| 打印媒体(`@media print` + `display: none`) | 纸张上没有交互,屏幕专属元素必须真的不出现 |
|
|
150
|
+
|
|
151
|
+
**这里刻意不写"现在有几处"**(I-7:同一个数字有第二个出处,就必然漂移)。
|
|
152
|
+
要数字就跑门禁,它会把每一类的处数打出来:
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
python 05-audit/cascade-layer-gate.py
|
|
156
|
+
```
|
|
148
157
|
|
|
149
|
-
|
|
158
|
+
> 曾经的教训:这份文档写"10 处(无障碍 9 + `[hidden]` 1)",而门禁当时实测
|
|
159
|
+
> **13 处**——多出来的 2 处是打印媒体,文档连这个类别都没列。
|
|
160
|
+
> 于是按文档去审计的人会把 2 处**判成"说不清"**,而那两处恰恰是正当的。
|
|
161
|
+
> 少写一个类别,比少写一个数字更坏。
|
|
150
162
|
|
|
151
163
|
## 八 · 对比度与触控的硬线
|
|
152
164
|
|
package/docs/LAYER-BASELINE.md
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
> ⇒ 它支撑的结论是「我们在这 7 个环境里试过,结果如下」,
|
|
26
26
|
> 不是「我们保证这 7 个环境一直能用」。
|
|
27
27
|
> 逐项结果(7 行 × 15 项)、15 项全集与复核方法见
|
|
28
|
-
> [`10-review/webview/RESULTS.md`](
|
|
28
|
+
> [`10-review/webview/RESULTS.md`](https://github.com/owain323/frontend-lib/blob/master/10-review/webview/RESULTS.md)。
|
|
29
29
|
|
|
30
30
|
---
|
|
31
31
|
|
|
@@ -146,7 +146,7 @@ Android 上 Chrome ≠ 系统 WebView ≠ 各家 App 内置 WebView。**入口
|
|
|
146
146
|
|---|---|
|
|
147
147
|
| 数据怎么来的 | 在真实设备上打开 `10-review/webview/capability-probe.html`,把页面输出的结果贴进上表 |
|
|
148
148
|
| 有没有原始记录 | 🔴 **没有入库**。当时探针把 JSON POST 回采集端,落的是本机文件,仓库里只留下转录进表格的结论 |
|
|
149
|
-
| 逐项结果在哪看 | [`10-review/webview/RESULTS.md`](
|
|
149
|
+
| 逐项结果在哪看 | [`10-review/webview/RESULTS.md`](https://github.com/owain323/frontend-lib/blob/master/10-review/webview/RESULTS.md) —— 7 行 × 15 项矩阵 |
|
|
150
150
|
| 别人怎么复核 | 同上文件「怎么自己复核一行」:取 UA → 在目标设备复跑探针 → 比对 `N / 15` 与缺失项 |
|
|
151
151
|
| 日期锚点 | 表格「测试日期」列写的是「见采集所在提交(git log)」;用 `git blame` + 该行 UA 的唯一片段定位 |
|
|
152
152
|
| 有没有自动化守着 | **没有**。人工一次性实测,浏览器升级不会触发任何门禁 |
|
package/index.html
CHANGED
package/llms-full.txt
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# agentcss — full reference (one file)
|
|
2
2
|
|
|
3
|
-
> Generated from `ai/components.json` + `ai/pitfalls*.json` + `ai/behaviors.json` at version **0.25.
|
|
3
|
+
> Generated from `ai/components.json` + `ai/pitfalls*.json` + `ai/behaviors.json` at version **0.25.6**.
|
|
4
4
|
> Do not edit by hand: run `python 05-audit/gen-llms.py` (freshness is gated).
|
|
5
5
|
> Short version: `llms.txt`. Machine contract: `ai/*.json`.
|
|
6
6
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentcss",
|
|
3
|
-
"version": "0.25.
|
|
3
|
+
"version": "0.25.6",
|
|
4
4
|
"description": "移动 Web 组件库:CSS + 可选行为脚本,零第三方运行时依赖。样式用 bundler 引入,交互行为用 script 标签引入。",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"css",
|
|
@@ -23,6 +23,8 @@
|
|
|
23
23
|
"default": "./esm/index.mjs"
|
|
24
24
|
},
|
|
25
25
|
"./tokens.css": "./dist/01-tokens/tokens.css",
|
|
26
|
+
"./tokens.core.css": "./dist/01-tokens/tokens.core.css",
|
|
27
|
+
"./base.reset.css": "./dist/01-tokens/base.reset.css",
|
|
26
28
|
"./typography.css": "./dist/01-tokens/typography.css",
|
|
27
29
|
"./page.css": "./dist/01-tokens/page.css",
|
|
28
30
|
"./esm": {
|
|
@@ -71,7 +73,17 @@
|
|
|
71
73
|
"CODE_OF_CONDUCT.md",
|
|
72
74
|
"CHANGELOG.md",
|
|
73
75
|
"LICENSE",
|
|
74
|
-
"index.html"
|
|
76
|
+
"index.html",
|
|
77
|
+
"!**/*.bak",
|
|
78
|
+
"!**/*.tmp",
|
|
79
|
+
"!**/*.orig",
|
|
80
|
+
"!**/*.rej",
|
|
81
|
+
"!**/*.old",
|
|
82
|
+
"!**/*.pyc",
|
|
83
|
+
"!**/*.log",
|
|
84
|
+
"!**/.DS_Store",
|
|
85
|
+
"!**/Thumbs.db",
|
|
86
|
+
"!**/__parity_probe.js"
|
|
75
87
|
],
|
|
76
88
|
"sideEffects": [
|
|
77
89
|
"**/*.css",
|
|
@@ -84,9 +96,9 @@
|
|
|
84
96
|
"gate:fast": "bash 05-audit/check-all.sh --fast",
|
|
85
97
|
"gate:timing": "bash 05-audit/check-all.sh --timing",
|
|
86
98
|
"ci:observe": "python3 05-audit/nightly-observe.py",
|
|
87
|
-
|
|
88
|
-
"ci:print-audit": "node 05-audit/print-content-audit.js --all",
|
|
89
|
-
"ci:merge-exp": "node 05-audit/render-merge-experiment.js",
|
|
99
|
+
"ci:print-cost": "node 05-audit/print-pagination-cost.js",
|
|
100
|
+
"ci:print-audit": "node 05-audit/print-content-audit.js --all",
|
|
101
|
+
"ci:merge-exp": "node 05-audit/render-merge-experiment.js",
|
|
90
102
|
"ci:zoom-merge": "node 05-audit/zoom-merge-experiment.js --all",
|
|
91
103
|
"size:record": "python3 05-audit/size-baseline.py --record",
|
|
92
104
|
"dist": "python3 05-audit/build-dist.py",
|