agentcss 0.24.2 → 0.25.1
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/README.md +1 -1
- package/01-tokens/tokens.css +67 -1
- package/01-tokens/typography.css +1 -1
- package/02-primitives/button/demo.html +8 -0
- package/02-primitives/card/README.md +15 -0
- package/02-primitives/choice/README.md +30 -0
- package/02-primitives/choice/choice.css +1 -1
- package/02-primitives/input/README.md +1 -0
- package/02-primitives/select/README.md +42 -2
- package/02-primitives/select/demo.html +11 -6
- package/02-primitives/select/select.js +184 -94
- package/02-primitives/timeline/demo.html +2 -2
- package/02-primitives/timeline/timeline.css +1 -1
- package/03-patterns/accordion/README.md +15 -0
- package/03-patterns/content/README.md +11 -0
- package/03-patterns/drawer/README.md +1 -1
- package/03-patterns/dropdown/demo.html +1 -1
- package/03-patterns/form-validation/README.md +18 -0
- package/03-patterns/form-validation/form-validation.css +12 -1
- package/03-patterns/list/README.md +11 -0
- package/03-patterns/overlay/README.md +26 -6
- package/03-patterns/overlay/overlay.css +22 -3
- package/03-patterns/overlay/overlay.js +63 -17
- package/03-patterns/states/README.md +15 -0
- package/03-patterns/states/states.css +18 -1
- package/03-patterns/tooltip/README.md +12 -0
- package/04-recipes/longform/longform.html +3 -3
- package/04-recipes/report/README.md +9 -0
- package/04-recipes/report/report.css +5 -0
- package/04-recipes/table/README.md +16 -0
- package/04-recipes/tierA-tokens.css +3 -3
- package/09-assets/README.md +18 -0
- package/09-assets/bar/bar.css +25 -10
- package/09-assets/echarts-adapter/demo.html +3 -1
- package/09-assets/echarts-adapter/echarts-adapter.js +107 -34
- package/09-assets/scientific-plot/README.md +2 -1
- package/09-assets/scientific-plot/scientific-plot.js +0 -7
- package/AGENTS.md +2 -1
- package/CHANGELOG.md +379 -18
- package/CONTRIBUTING.md +6 -5
- package/README.md +6 -2
- package/README.zh-CN.md +19 -7
- package/SECURITY.md +5 -2
- package/START-HERE.md +7 -7
- package/SUPPORT.md +86 -24
- package/ai/START-HERE.md +3 -2
- package/ai/cli.js +126 -6
- package/ai/components.json +258 -2
- package/ai/components.meta.json +257 -40
- package/ai/components.schema.json +96 -0
- package/ai/contract.schema.json +11 -0
- package/ai/pdf-pages.js +107 -0
- package/ai/pdf.js +354 -0
- package/ai/tokens.json +2 -2
- package/ai/validate.js +48 -1
- package/dist/01-tokens/tokens.css +1 -1
- package/dist/02-primitives/select/select.js +158 -71
- package/dist/03-patterns/form-validation/form-validation.css +1 -1
- package/dist/03-patterns/overlay/overlay.css +1 -1
- package/dist/03-patterns/overlay/overlay.js +40 -11
- package/dist/03-patterns/states/states.css +1 -1
- package/dist/04-recipes/report/report.css +1 -1
- package/dist/04-recipes/tierA-tokens.css +1 -1
- package/dist/09-assets/bar/bar.css +1 -1
- package/dist/09-assets/echarts-adapter/echarts-adapter.js +75 -33
- package/dist/09-assets/scientific-plot/scientific-plot.js +0 -7
- package/dist/COSTS.md +37 -37
- package/docs/ACCESSIBILITY.md +3 -3
- package/docs/FACTS.md +1 -1
- package/docs/LAYER-BASELINE.md +28 -3
- package/docs/PRINT.md +450 -0
- package/docs/RELEASE-PROCESS.md +78 -3
- package/index.html +1 -1
- package/llms-full.txt +7 -7
- package/llms.txt +5 -0
- package/package.json +6 -1
|
@@ -1,26 +1,34 @@
|
|
|
1
1
|
(function () {
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
function cssVar(name, fallback) {
|
|
4
|
+
function cssVar(name, fallback, ctx) {
|
|
5
5
|
if (typeof window.getComputedStyle !== 'function') return fallback;
|
|
6
|
-
var
|
|
6
|
+
var el = ctx || document.documentElement;
|
|
7
|
+
var v = getComputedStyle(el).getPropertyValue(name);
|
|
7
8
|
return (v && v.trim()) || fallback;
|
|
8
9
|
}
|
|
9
10
|
|
|
10
|
-
function
|
|
11
|
+
function scopeOf(el) {
|
|
12
|
+
try {
|
|
13
|
+
if (el && el.closest) return el.closest('[data-theme]') || document.documentElement;
|
|
14
|
+
} catch (e) { }
|
|
15
|
+
return document.documentElement;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function palette(ctx) {
|
|
11
19
|
return {
|
|
12
|
-
text: cssVar('--text-primary', '#15181c'),
|
|
13
|
-
textSub: cssVar('--text-secondary', '#5b6472'),
|
|
14
|
-
textTertiary: cssVar('--text-tertiary', '#8a94a3'),
|
|
15
|
-
surface: cssVar('--surface', '#ffffff'),
|
|
16
|
-
paper: cssVar('--paper', '#f6f7f8'),
|
|
17
|
-
border: cssVar('--border-decor', '#e2e5e9'),
|
|
18
|
-
borderStrong: cssVar('--border-control', '#868b94'),
|
|
19
|
-
danger: cssVar('--danger', '#c0392b'),
|
|
20
|
-
success: cssVar('--success', '#2e7d52'),
|
|
21
|
-
warn: cssVar('--warning', '#b8860b'),
|
|
22
|
-
info: cssVar('--info', '#2b7a9e'),
|
|
23
|
-
accent: cssVar('--accent', '#1b4d8f'),
|
|
20
|
+
text: cssVar('--text-primary', '#15181c', ctx),
|
|
21
|
+
textSub: cssVar('--text-secondary', '#5b6472', ctx),
|
|
22
|
+
textTertiary: cssVar('--text-tertiary', '#8a94a3', ctx),
|
|
23
|
+
surface: cssVar('--surface', '#ffffff', ctx),
|
|
24
|
+
paper: cssVar('--paper', '#f6f7f8', ctx),
|
|
25
|
+
border: cssVar('--border-decor', '#e2e5e9', ctx),
|
|
26
|
+
borderStrong: cssVar('--border-control', '#868b94', ctx),
|
|
27
|
+
danger: cssVar('--danger', '#c0392b', ctx),
|
|
28
|
+
success: cssVar('--success', '#2e7d52', ctx),
|
|
29
|
+
warn: cssVar('--warning', '#b8860b', ctx),
|
|
30
|
+
info: cssVar('--info', '#2b7a9e', ctx),
|
|
31
|
+
accent: cssVar('--accent', '#1b4d8f', ctx),
|
|
24
32
|
};
|
|
25
33
|
}
|
|
26
34
|
|
|
@@ -30,17 +38,47 @@ if (n > ramp.length) return null;
|
|
|
30
38
|
return ramp.slice(0, n);
|
|
31
39
|
}
|
|
32
40
|
|
|
33
|
-
function
|
|
34
|
-
|
|
35
|
-
var
|
|
36
|
-
|
|
41
|
+
function parseColor(v) {
|
|
42
|
+
if (!v) return null;
|
|
43
|
+
var t = String(v).trim();
|
|
44
|
+
var m = /^#([0-9a-f]{3})$/i.exec(t);
|
|
45
|
+
if (m) {
|
|
46
|
+
return [parseInt(m[1][0] + m[1][0], 16),
|
|
47
|
+
parseInt(m[1][1] + m[1][1], 16),
|
|
48
|
+
parseInt(m[1][2] + m[1][2], 16)];
|
|
49
|
+
}
|
|
50
|
+
m = /^#([0-9a-f]{6})$/i.exec(t);
|
|
51
|
+
if (m) {
|
|
52
|
+
return [parseInt(m[1].slice(0, 2), 16),
|
|
53
|
+
parseInt(m[1].slice(2, 4), 16),
|
|
54
|
+
parseInt(m[1].slice(4, 6), 16)];
|
|
55
|
+
}
|
|
56
|
+
m = /^rgba?\(\s*([\d.]+)[,\s]+([\d.]+)[,\s]+([\d.]+)/i.exec(t);
|
|
57
|
+
if (m) return [Math.round(+m[1]), Math.round(+m[2]), Math.round(+m[3])];
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
function isDarkScope(ctx) {
|
|
62
|
+
var c = parseColor(cssVar('--paper', '', ctx));
|
|
63
|
+
if (!c) return false;
|
|
64
|
+
var lin = c.map(function (v) {
|
|
65
|
+
v = v / 255;
|
|
66
|
+
return v <= 0.03928 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
return (0.2126 * lin[0] + 0.7152 * lin[1] + 0.0722 * lin[2]) < 0.18;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
function theme(name, p, ctx) {
|
|
73
|
+
p = p || palette(ctx);
|
|
74
|
+
var isDark = isDarkScope(ctx);
|
|
37
75
|
|
|
38
76
|
return {
|
|
39
77
|
color: [p.accent, p.danger, p.success, p.warn, p.info],
|
|
40
78
|
backgroundColor: 'transparent',
|
|
41
79
|
textStyle: {
|
|
42
80
|
color: p.text,
|
|
43
|
-
fontFamily: cssVar('--sans', 'system-ui, sans-serif'),
|
|
81
|
+
fontFamily: cssVar('--sans', 'system-ui, sans-serif', ctx),
|
|
44
82
|
},
|
|
45
83
|
title: {
|
|
46
84
|
textStyle: { color: p.text, fontWeight: 600 },
|
|
@@ -48,7 +86,8 @@ subtextStyle: { color: p.textSub },
|
|
|
48
86
|
},
|
|
49
87
|
legend: { textStyle: { color: p.textSub } },
|
|
50
88
|
tooltip: {
|
|
51
|
-
|
|
89
|
+
|
|
90
|
+
backgroundColor: cssVar('--surface', isDark ? '#1c2024' : '#ffffff', ctx),
|
|
52
91
|
borderColor: p.border,
|
|
53
92
|
borderWidth: 1,
|
|
54
93
|
textStyle: { color: p.text, fontSize: 12 },
|
|
@@ -75,12 +114,12 @@ splitNumber: 4,
|
|
|
75
114
|
};
|
|
76
115
|
}
|
|
77
116
|
|
|
78
|
-
function defaults(option) {
|
|
79
|
-
var p = palette();
|
|
117
|
+
function defaults(option, ctx) {
|
|
118
|
+
var p = palette(ctx);
|
|
80
119
|
var o = option || {};
|
|
81
120
|
|
|
82
121
|
o.textStyle = merge(o.textStyle, {
|
|
83
|
-
fontFamily: cssVar('--mono', 'ui-monospace, monospace'),
|
|
122
|
+
fontFamily: cssVar('--mono', 'ui-monospace, monospace', ctx),
|
|
84
123
|
});
|
|
85
124
|
|
|
86
125
|
o.grid = merge(o.grid, { left: 56, right: 24, top: 32, bottom: 32, containLabel: false });
|
|
@@ -124,9 +163,8 @@ console.warn('[frontend-lib] 系列数 ' + o.series.length +
|
|
|
124
163
|
return o;
|
|
125
164
|
}
|
|
126
165
|
|
|
127
|
-
function currentThemeName() {
|
|
128
|
-
return 'fe-' +
|
|
129
|
-
(document.documentElement.getAttribute('data-theme-current') || 'light');
|
|
166
|
+
function currentThemeName(ctx) {
|
|
167
|
+
return 'fe-' + (isDarkScope(ctx) ? 'dark' : 'light');
|
|
130
168
|
}
|
|
131
169
|
|
|
132
170
|
function create(dom, opt) {
|
|
@@ -137,16 +175,17 @@ console.warn('[frontend-lib] 未检测到 ECharts —— ' +
|
|
|
137
175
|
}
|
|
138
176
|
return null;
|
|
139
177
|
}
|
|
140
|
-
var
|
|
178
|
+
var ctx = scopeOf(dom);
|
|
179
|
+
var name = currentThemeName(ctx);
|
|
141
180
|
|
|
142
181
|
if (typeof window.echarts.registerTheme === 'function') {
|
|
143
|
-
window.echarts.registerTheme(name, theme(name));
|
|
182
|
+
window.echarts.registerTheme(name, theme(name, null, ctx));
|
|
144
183
|
}
|
|
145
184
|
var inst = window.echarts.init(dom, name);
|
|
146
185
|
inst.__feDom = dom;
|
|
147
186
|
inst.__feOpts = opt || {};
|
|
148
187
|
inst.__feTheme = name;
|
|
149
|
-
inst.setOption(defaults(inst.__feOpts));
|
|
188
|
+
inst.setOption(defaults(inst.__feOpts, ctx));
|
|
150
189
|
return inst;
|
|
151
190
|
}
|
|
152
191
|
|
|
@@ -162,14 +201,17 @@ cssVar: cssVar,
|
|
|
162
201
|
palette: palette,
|
|
163
202
|
seriesColors: seriesColors,
|
|
164
203
|
theme: theme,
|
|
204
|
+
|
|
205
|
+
themeName: currentThemeName,
|
|
165
206
|
defaults: defaults,
|
|
166
207
|
create: create,
|
|
167
208
|
|
|
168
209
|
refresh: function (inst) {
|
|
169
210
|
if (!inst) return;
|
|
170
|
-
var
|
|
211
|
+
var ctx = scopeOf(inst.__feDom);
|
|
212
|
+
var name = currentThemeName(ctx);
|
|
171
213
|
if (typeof window.echarts !== 'undefined' && window.echarts.registerTheme) {
|
|
172
|
-
window.echarts.registerTheme(name, theme(name));
|
|
214
|
+
window.echarts.registerTheme(name, theme(name, null, ctx));
|
|
173
215
|
}
|
|
174
216
|
|
|
175
217
|
if (inst.__feDom) {
|
|
@@ -177,7 +219,7 @@ var opt = inst.__feOpts;
|
|
|
177
219
|
inst.dispose();
|
|
178
220
|
return create(inst.__feDom, opt);
|
|
179
221
|
}
|
|
180
|
-
inst.setOption(defaults(inst.__feOpts), name);
|
|
222
|
+
inst.setOption(defaults(inst.__feOpts, ctx), name);
|
|
181
223
|
return inst;
|
|
182
224
|
},
|
|
183
225
|
};
|
|
@@ -25,13 +25,6 @@ return String(s == null ? '' : s)
|
|
|
25
25
|
return v.toFixed(p);
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
function cssVar(name, fallback) {
|
|
29
|
-
if (typeof getComputedStyle !== 'function' || !document.documentElement) return fallback;
|
|
30
|
-
var v = getComputedStyle(document.documentElement).getPropertyValue(name);
|
|
31
|
-
v = v ? v.trim() : '';
|
|
32
|
-
return v || fallback;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
28
|
/* --------------------------------------------------------------- 比例尺 */
|
|
36
29
|
|
|
37
30
|
/**
|
package/dist/COSTS.md
CHANGED
|
@@ -9,52 +9,52 @@
|
|
|
9
9
|
|
|
10
10
|
实测两笔账,一笔不省:
|
|
11
11
|
|
|
12
|
-
- `tokens` 源码版 gzip **
|
|
13
|
-
源码多的那部分**全是注释**(全库 CSS 有
|
|
14
|
-
- tokens 的 min 版 2.
|
|
12
|
+
- `tokens` 源码版 gzip **21.9 KB** → min 版 **2.9 KB**(省 87%)——
|
|
13
|
+
源码多的那部分**全是注释**(全库 CSS 有 69% 是注释,字节口径),而注释是给维护者的,不是给浏览器的。
|
|
14
|
+
- tokens 的 min 版 2.9 KB **比任何一个组件自己都贵** ⇒
|
|
15
15
|
"只用一个组件"的真实起步价就是它。不公开这张表,等于让人盲买。
|
|
16
16
|
|
|
17
17
|
## 二、明码标价
|
|
18
18
|
|
|
19
19
|
| 档 | 组件 | tokens(必付) | CSS | JS | **合计** | 源码版合计 | 差 |
|
|
20
20
|
|---|---|---:|---:|---:|---:|---:|---:|
|
|
21
|
-
| primitive | `badge` | 2.
|
|
22
|
-
| primitive | `button` | 2.
|
|
23
|
-
| primitive | `card` | 2.
|
|
24
|
-
| primitive | `choice` | 2.
|
|
25
|
-
| primitive | `combobox` | 2.
|
|
26
|
-
| primitive | `date-range` | 2.
|
|
27
|
-
| primitive | `delta` | 2.
|
|
28
|
-
| primitive | `input` | 2.
|
|
29
|
-
| primitive | `metric` | 2.
|
|
30
|
-
| primitive | `popover` | 2.
|
|
31
|
-
| primitive | `progress` | 2.
|
|
32
|
-
| primitive | `select` | 2.
|
|
33
|
-
| primitive | `separator` | 2.
|
|
34
|
-
| primitive | `skeleton` | 2.
|
|
35
|
-
| primitive | `switch` | 2.
|
|
36
|
-
| primitive | `timeline` | 2.
|
|
37
|
-
| primitive | `upload` | 2.
|
|
38
|
-
| pattern | `accordion` | 2.
|
|
39
|
-
| pattern | `content` | 2.
|
|
40
|
-
| pattern | `drawer` | 2.
|
|
41
|
-
| pattern | `dropdown` | 2.
|
|
42
|
-
| pattern | `form-validation` | 2.
|
|
43
|
-
| pattern | `list` | 2.
|
|
44
|
-
| pattern | `nav` | 2.
|
|
45
|
-
| pattern | `overlay` | 2.
|
|
46
|
-
| pattern | `pagination` | 2.
|
|
47
|
-
| pattern | `reveal` | 2.
|
|
48
|
-
| pattern | `states` | 2.
|
|
49
|
-
| pattern | `tabs` | 2.
|
|
50
|
-
| pattern | `tooltip` | 2.
|
|
51
|
-
| pattern | `tree` | 2.
|
|
21
|
+
| primitive | `badge` | 2.9 KB | 0.5 KB | — | **3.4 KB** | 24.6 KB | −21.2 KB |
|
|
22
|
+
| primitive | `button` | 2.9 KB | 1.0 KB | — | **3.9 KB** | 28.3 KB | −24.4 KB |
|
|
23
|
+
| primitive | `card` | 2.9 KB | 0.9 KB | — | **3.9 KB** | 26.0 KB | −22.1 KB |
|
|
24
|
+
| primitive | `choice` | 2.9 KB | 1.1 KB | — | **4.0 KB** | 27.8 KB | −23.8 KB |
|
|
25
|
+
| primitive | `combobox` | 2.9 KB | 1.0 KB | 5.4 KB | **9.3 KB** | 31.4 KB | −22.1 KB |
|
|
26
|
+
| primitive | `date-range` | 2.9 KB | 0.8 KB | 2.5 KB | **6.3 KB** | 28.4 KB | −22.1 KB |
|
|
27
|
+
| primitive | `delta` | 2.9 KB | 0.3 KB | — | **3.2 KB** | 24.6 KB | −21.4 KB |
|
|
28
|
+
| primitive | `input` | 2.9 KB | 1.0 KB | — | **4.0 KB** | 25.8 KB | −21.9 KB |
|
|
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.2 KB | −23.3 KB |
|
|
31
|
+
| primitive | `progress` | 2.9 KB | 0.8 KB | — | **3.7 KB** | 26.2 KB | −22.5 KB |
|
|
32
|
+
| primitive | `select` | 2.9 KB | 0.8 KB | 4.1 KB | **7.9 KB** | 32.9 KB | −24.9 KB |
|
|
33
|
+
| primitive | `separator` | 2.9 KB | 0.2 KB | — | **3.2 KB** | 23.2 KB | −20.0 KB |
|
|
34
|
+
| primitive | `skeleton` | 2.9 KB | 0.5 KB | — | **3.4 KB** | 23.8 KB | −20.4 KB |
|
|
35
|
+
| primitive | `switch` | 2.9 KB | 0.8 KB | — | **3.7 KB** | 30.2 KB | −26.5 KB |
|
|
36
|
+
| primitive | `timeline` | 2.9 KB | 0.5 KB | — | **3.4 KB** | 25.1 KB | −21.7 KB |
|
|
37
|
+
| primitive | `upload` | 2.9 KB | 1.4 KB | 4.2 KB | **8.5 KB** | 39.3 KB | −30.8 KB |
|
|
38
|
+
| pattern | `accordion` | 2.9 KB | 1.3 KB | 1.8 KB | **6.0 KB** | 36.4 KB | −30.4 KB |
|
|
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.5 KB | **6.2 KB** | 29.0 KB | −22.8 KB |
|
|
41
|
+
| pattern | `dropdown` | 2.9 KB | 0.8 KB | 3.4 KB | **7.1 KB** | 31.3 KB | −24.2 KB |
|
|
42
|
+
| pattern | `form-validation` | 2.9 KB | 0.8 KB | — | **3.7 KB** | 26.8 KB | −23.1 KB |
|
|
43
|
+
| pattern | `list` | 2.9 KB | 0.6 KB | — | **3.5 KB** | 24.3 KB | −20.8 KB |
|
|
44
|
+
| pattern | `nav` | 2.9 KB | 1.2 KB | 2.6 KB | **6.8 KB** | 33.0 KB | −26.2 KB |
|
|
45
|
+
| pattern | `overlay` | 2.9 KB | 1.2 KB | 3.5 KB | **7.6 KB** | 38.1 KB | −30.5 KB |
|
|
46
|
+
| pattern | `pagination` | 2.9 KB | 0.8 KB | 2.6 KB | **6.3 KB** | 32.4 KB | −26.1 KB |
|
|
47
|
+
| pattern | `reveal` | 2.9 KB | 0.3 KB | 1.2 KB | **4.4 KB** | 26.4 KB | −22.0 KB |
|
|
48
|
+
| pattern | `states` | 2.9 KB | 0.9 KB | — | **3.8 KB** | 26.3 KB | −22.5 KB |
|
|
49
|
+
| pattern | `tabs` | 2.9 KB | 0.7 KB | 2.0 KB | **5.6 KB** | 29.1 KB | −23.5 KB |
|
|
50
|
+
| pattern | `tooltip` | 2.9 KB | 0.5 KB | 1.9 KB | **5.3 KB** | 28.3 KB | −23.0 KB |
|
|
51
|
+
| pattern | `tree` | 2.9 KB | 0.6 KB | 2.9 KB | **6.5 KB** | 30.1 KB | −23.6 KB |
|
|
52
52
|
|
|
53
53
|
## 三、全库
|
|
54
54
|
|
|
55
|
-
- 全部组件都用上(min,含 tokens 一份):**
|
|
56
|
-
- 源码版(带注释)全库 gzip:
|
|
55
|
+
- 全部组件都用上(min,含 tokens 一份):**70.2 KB**
|
|
56
|
+
- 源码版(带注释)全库 gzip:356.4 KB
|
|
57
57
|
|
|
58
|
-
> ⚠️ 源码版那个数字**不是**要付的钱:它包含我们的注释(全库 CSS 有
|
|
58
|
+
> ⚠️ 源码版那个数字**不是**要付的钱:它包含我们的注释(全库 CSS 有 69% 是注释,字节口径)。
|
|
59
59
|
> 它的用途只有一个 —— 让人看清"dist 到底省了多少"。
|
|
60
60
|
|
package/docs/ACCESSIBILITY.md
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
|
|
6
6
|
| 项目 | 值 |
|
|
7
7
|
|---|---|
|
|
8
|
-
| 声明适用版本 | agentcss `0.
|
|
9
|
-
| 声明日期 | 2026-11-
|
|
8
|
+
| 声明适用版本 | agentcss `0.25.1` |
|
|
9
|
+
| 声明日期 | 2026-11-03 |
|
|
10
10
|
| 复核节奏 | 每次发版前重跑(`npm run gate` 内含全部证据) |
|
|
11
11
|
| 范围 | 本库交付的 CSS / JS、全部 `demo.html`(组件页 + 图表页 + 组合页)、以及文档站生成的页面 |
|
|
12
12
|
| 不在范围 | 使用者拿这些组件拼出来的业务页面(那是你的无障碍责任,不是库的) |
|
|
@@ -85,7 +85,7 @@
|
|
|
85
85
|
| `heading-outline.js`(人工工具) | **全部 HTML:96 页 / 887 个标题** | 0 处跳级 · 每页恰好 1 个 `h1` · DOM 标题数 == 无障碍树 heading 数 |
|
|
86
86
|
| `a11y-ax.js` 可访问性树 | **全部 `demo.html`(现 40 个)**;清单与磁盘不一致即红 | 0 个无名控件;40 份朗读序列快照在 `10-review/a11y-tree/` |
|
|
87
87
|
| `contrast.py` / `dark-contrast.js` | 亮 / 暗两套,逐对实算 | 正文 ≥ 4.5:1 |
|
|
88
|
-
| `zoom-reflow.js` | 40
|
|
88
|
+
| `zoom-reflow.js` | 43 页(40 个组件 demo + 3 个文档页)× 3 条 AA 硬项;每页 1 次加载,改视口 / 字号后等**关键布局指标**稳定(指纹连续 3 帧不变,超时判红;证不到的边界见脚本头) | 320px 不横滚 · 200% 不裁字 · 焦点不被遮挡 |
|
|
89
89
|
| `focus-ring-check` / `focus-return-check` / `keyboard-nav` | 焦点可见、焦点归还、键盘路径 | 全绿 |
|
|
90
90
|
|
|
91
91
|
### 人工(**已执行一轮,仍缺人耳与第二平台**)
|
package/docs/FACTS.md
CHANGED
package/docs/LAYER-BASELINE.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# `@layer` 的 WebView 基线(W12)
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> **当前状态:7 行真机人工实测,且已出现 1 个阻塞样本。**
|
|
4
4
|
> 已有 7 行真机实测。**`@layer` 6 行通过、1 行不通过**:
|
|
5
5
|
>
|
|
6
6
|
> | 入口 | 结果 |
|
|
@@ -18,6 +18,14 @@
|
|
|
18
18
|
>
|
|
19
19
|
> 按下面第三节的判据:**已有一行 `@layer` 不通过 ⇒ 当前不能无条件切层**,
|
|
20
20
|
> 只能走 `@supports at-rule(@layer)` 双写,或者不切。
|
|
21
|
+
>
|
|
22
|
+
> 🔍 **证据等级:人工实测,不是自动化覆盖。**
|
|
23
|
+
> 这 7 行是在真实设备上打开探针页、人工录入的结果 —— 有完整 UA、可复跑,但**没有回归保护**:
|
|
24
|
+
> 某个浏览器下次升级,不会有任何门禁因此变红。
|
|
25
|
+
> ⇒ 它支撑的结论是「我们在这 7 个环境里试过,结果如下」,
|
|
26
|
+
> 不是「我们保证这 7 个环境一直能用」。
|
|
27
|
+
> 逐项结果(7 行 × 15 项)、15 项全集与复核方法见
|
|
28
|
+
> [`10-review/webview/RESULTS.md`](../10-review/webview/RESULTS.md)。
|
|
21
29
|
|
|
22
30
|
---
|
|
23
31
|
|
|
@@ -132,6 +140,21 @@ Android 上 Chrome ≠ 系统 WebView ≠ 各家 App 内置 WebView。**入口
|
|
|
132
140
|
| iPad · Safari(**用户口述为平板**;UA 是桌面版 = iPad 请求桌面网站,视口 834×1210 与 iPad Pro 11" 一致) | Safari 26.6.1(桌面版 UA) | `Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.6.1 Safari/605.1.15` | 15 / 15 | 无 | 见采集所在提交(git log) | 项目所有者(真机) | VERIFIED |
|
|
133
141
|
| iPhone · QQ 浏览器(**用户口述为手机**;视口 430×736 @3x) | QQ 浏览器 20.6.6(MQQBrowser,WKWebView) | `Mozilla/5.0 (iPhone; CPU iPhone OS 26_6_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.0 MQQBrowser/20.6.6 Mobile/15E148 Safari/604.1 QBWebViewUA/2 QBWebViewType/1 WKType/1` | 15 / 15 | 无 | 见采集所在提交(git log) | 项目所有者(真机) | VERIFIED |
|
|
134
142
|
|
|
143
|
+
### 四·一、这 7 行的证据强度与复核
|
|
144
|
+
|
|
145
|
+
| 问题 | 答案 |
|
|
146
|
+
|---|---|
|
|
147
|
+
| 数据怎么来的 | 在真实设备上打开 `10-review/webview/capability-probe.html`,把页面输出的结果贴进上表 |
|
|
148
|
+
| 有没有原始记录 | 🔴 **没有入库**。当时探针把 JSON POST 回采集端,落的是本机文件,仓库里只留下转录进表格的结论 |
|
|
149
|
+
| 逐项结果在哪看 | [`10-review/webview/RESULTS.md`](../10-review/webview/RESULTS.md) —— 7 行 × 15 项矩阵 |
|
|
150
|
+
| 别人怎么复核 | 同上文件「怎么自己复核一行」:取 UA → 在目标设备复跑探针 → 比对 `N / 15` 与缺失项 |
|
|
151
|
+
| 日期锚点 | 表格「测试日期」列写的是「见采集所在提交(git log)」;用 `git blame` + 该行 UA 的唯一片段定位 |
|
|
152
|
+
| 有没有自动化守着 | **没有**。人工一次性实测,浏览器升级不会触发任何门禁 |
|
|
153
|
+
|
|
154
|
+
⚠️ 上表「状态」列的 `VERIFIED` 是 `webview-probe-gate.py` 的**结构判据**(UA 完整可复核、无占位符、
|
|
155
|
+
8 列齐全),**不是**「自动化验证过」。它和 `SUPPORT.md` 里的 `✅ 已验证` 同名不同义 ——
|
|
156
|
+
读这一列时别把两者当成一回事。
|
|
157
|
+
|
|
135
158
|
---
|
|
136
159
|
|
|
137
160
|
## 五、刻意不写的东西
|
|
@@ -153,6 +176,8 @@ UA 是证据,版本传闻不是。
|
|
|
153
176
|
|---|---|---|
|
|
154
177
|
| `10-review/ios/index.html` | **观感与交互**在 Safari 下对不对(按钮、键盘弹起、暗色) | 人眼看,逐条对 |
|
|
155
178
|
| `10-review/webview/capability-probe.html` | **能力**在目标 WebView 里有没有(`@layer` 等 15 项) | 机器判定,人只负责贴 JSON |
|
|
179
|
+
| `10-review/webview/RESULTS.md` | 那 15 项**分别是什么**、每台设备**逐项**如何、别人怎么复跑一遍 | 随实测更新 |
|
|
156
180
|
|
|
157
|
-
|
|
158
|
-
|
|
181
|
+
三者不能互相替代:能力全支持而观感崩了,和观感正常但 `@layer` 被整段丢弃,
|
|
182
|
+
是两种完全不同的事故;而"知道有 15 项"和"知道这 15 项各自是什么"也不是一件事 ——
|
|
183
|
+
前者只是计数,后者才能判断某个缺失要不要紧。
|