agentcss 0.25.1 → 0.25.2

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.
Files changed (44) hide show
  1. package/02-primitives/button/README.md +7 -0
  2. package/02-primitives/button/demo.html +52 -0
  3. package/02-primitives/card/README.md +6 -1
  4. package/02-primitives/card/demo.html +13 -0
  5. package/02-primitives/choice/choice.css +10 -0
  6. package/02-primitives/choice/demo.html +38 -0
  7. package/02-primitives/date-range/README.md +1 -1
  8. package/02-primitives/date-range/demo.html +41 -1
  9. package/02-primitives/input/README.md +3 -2
  10. package/02-primitives/input/demo.html +42 -0
  11. package/03-patterns/accordion/demo.html +113 -0
  12. package/03-patterns/content/demo.html +17 -0
  13. package/03-patterns/drawer/README.md +11 -1
  14. package/03-patterns/drawer/drawer.css +22 -6
  15. package/03-patterns/drawer/drawer.js +16 -1
  16. package/03-patterns/dropdown/README.md +10 -8
  17. package/03-patterns/dropdown/demo.html +5 -0
  18. package/03-patterns/dropdown/dropdown.js +8 -0
  19. package/03-patterns/form-validation/demo.html +20 -0
  20. package/03-patterns/list/demo.html +10 -0
  21. package/03-patterns/overlay/overlay.js +14 -1
  22. package/03-patterns/pagination/demo.html +23 -0
  23. package/03-patterns/states/demo.html +39 -1
  24. package/03-patterns/tabs/demo.html +34 -0
  25. package/03-patterns/tooltip/tooltip.js +8 -4
  26. package/04-recipes/app-shell/demo.html +27 -0
  27. package/04-recipes/table/demo.html +34 -0
  28. package/09-assets/bar/bar.js +8 -4
  29. package/09-assets/bar/demo.html +27 -0
  30. package/CHANGELOG.md +66 -1
  31. package/START-HERE.md +6 -6
  32. package/ai/components.json +6 -3
  33. package/dist/02-primitives/choice/choice.css +1 -1
  34. package/dist/03-patterns/drawer/drawer.css +1 -1
  35. package/dist/03-patterns/drawer/drawer.js +10 -1
  36. package/dist/03-patterns/dropdown/dropdown.js +4 -0
  37. package/dist/03-patterns/overlay/overlay.js +7 -1
  38. package/dist/03-patterns/tooltip/tooltip.js +3 -3
  39. package/dist/09-assets/bar/bar.js +4 -3
  40. package/dist/COSTS.md +7 -7
  41. package/docs/ACCESSIBILITY.md +1 -1
  42. package/index.html +1 -1
  43. package/llms-full.txt +3 -3
  44. package/package.json +1 -1
@@ -1 +1 @@
1
- .drawer-backdrop {position:fixed;inset:0;z-index:var(--z-modal);background:var(--scrim);display:flex;justify-content:flex-end;}.drawer-backdrop[hidden] {display:none;}.drawer {width:min(420px, 92vw);height:100%;display:flex;flex-direction:column;background:var(--surface);border-inline-start:1px solid var(--border-decor);box-shadow:var(--shadow-2);overflow:hidden;}.drawer--left {border-inline-start:0;border-inline-end:1px solid var(--border-decor);}.drawer--top {width:100%;height:min(60vh, 420px);border-inline-start:0;border-bottom:1px solid var(--border-decor);}.drawer--bottom {width:100%;height:min(60vh, 420px);border-inline-start:0;border-top:1px solid var(--border-decor);}.drawer__head {display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-4);border-bottom:1px solid var(--border-decor);flex:0 0 auto;}.drawer__title {flex:1 1 auto;margin:0;font-size:var(--fs-lg);font-weight:600;}.drawer__close {flex:0 0 auto;width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:none;border:0;border-radius:var(--r-sm);color:var(--text-secondary);font-size:20px;line-height:1;cursor:pointer;}.drawer__close:focus-visible {outline:var(--focus-ring-width) solid var(--focus-ring-color);outline-offset:var(--focus-ring-offset);}@media (hover:hover) and (pointer:fine) {.drawer__close:hover {background:var(--surface-sunken);}}.drawer__body {flex:1 1 auto;padding:var(--sp-4);overflow-y:auto;-webkit-overflow-scrolling:touch;}.drawer__foot {flex:0 0 auto;display:flex;gap:var(--sp-2);justify-content:flex-end;padding:var(--sp-4);border-top:1px solid var(--border-decor);}@media (prefers-reduced-motion:no-preference) {.drawer--right {animation:drawer-in-right 220ms var(--ease-drawer, ease);}.drawer--left {animation:drawer-in-left 220ms var(--ease-drawer, ease);}.drawer--top {animation:drawer-in-top 220ms var(--ease-drawer, ease);}.drawer--bottom {animation:drawer-in-bottom 220ms var(--ease-drawer, ease);}@keyframes drawer-in-right {from {transform:translateX(16px);opacity:.6;}}@keyframes drawer-in-left {from {transform:translateX(-16px);opacity:.6;}}@keyframes drawer-in-top {from {transform:translateY(-16px);opacity:.6;}}@keyframes drawer-in-bottom {from {transform:translateY(16px);opacity:.6;}}}.drawer[data-state="leaving"] {opacity:0;transition:opacity 160ms var(--ease-out, ease);}
1
+ .drawer-backdrop {position:fixed;inset:0;z-index:var(--z-modal);background:var(--scrim);display:flex;justify-content:flex-end;}.drawer-backdrop[hidden] {display:none;}.drawer {width:min(420px, 92vw);height:100%;display:flex;flex-direction:column;background:var(--surface);border-inline-start:1px solid var(--border-decor);box-shadow:var(--shadow-2);overflow:hidden;}.drawer--left {margin-inline-end:auto;border-inline-start:0;border-inline-end:1px solid var(--border-decor);}.drawer--top {align-self:flex-start;width:100%;height:min(60vh, 420px);border-inline-start:0;border-bottom:1px solid var(--border-decor);}.drawer--bottom {align-self:flex-end;width:100%;height:min(60vh, 420px);border-inline-start:0;border-top:1px solid var(--border-decor);}.drawer__head {display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-4);border-bottom:1px solid var(--border-decor);flex:0 0 auto;}.drawer__title {flex:1 1 auto;margin:0;font-size:var(--fs-lg);font-weight:600;}.drawer__close {flex:0 0 auto;width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:none;border:0;border-radius:var(--r-sm);color:var(--text-secondary);font-size:20px;line-height:1;cursor:pointer;}.drawer__close:focus-visible {outline:var(--focus-ring-width) solid var(--focus-ring-color);outline-offset:var(--focus-ring-offset);}@media (hover:hover) and (pointer:fine) {.drawer__close:hover {background:var(--surface-sunken);}}.drawer__body {flex:1 1 auto;padding:var(--sp-4);overflow-y:auto;-webkit-overflow-scrolling:touch;}.drawer__foot {flex:0 0 auto;display:flex;gap:var(--sp-2);justify-content:flex-end;padding:var(--sp-4);border-top:1px solid var(--border-decor);}@media (prefers-reduced-motion:no-preference) {.drawer--right {animation:drawer-in-right 220ms var(--ease-drawer, ease);}.drawer--left {animation:drawer-in-left 220ms var(--ease-drawer, ease);}.drawer--top {animation:drawer-in-top 220ms var(--ease-drawer, ease);}.drawer--bottom {animation:drawer-in-bottom 220ms var(--ease-drawer, ease);}@keyframes drawer-in-right {from {transform:translateX(16px);opacity:.6;}}@keyframes drawer-in-left {from {transform:translateX(-16px);opacity:.6;}}@keyframes drawer-in-top {from {transform:translateY(-16px);opacity:.6;}}@keyframes drawer-in-bottom {from {transform:translateY(16px);opacity:.6;}}}.drawer[data-state="leaving"] {opacity:0;transition:opacity 160ms var(--ease-out, ease);}
@@ -164,9 +164,18 @@ inerts = [];
164
164
  }
165
165
  }
166
166
 
167
+ var PLACE_CLASS = {
168
+ right: 'drawer--right', end: 'drawer--right',
169
+ left: 'drawer--left', start: 'drawer--left',
170
+ top: 'drawer--top',
171
+ bottom: 'drawer--bottom'
172
+ };
173
+
167
174
  function open(opt) {
168
175
  opt = opt || {};
169
176
  var place = opt.place || 'right';
177
+ var placeCls = PLACE_CLASS[place];
178
+ if (!placeCls) placeCls = PLACE_CLASS.right;
170
179
 
171
180
  var fr = flFocusReturn({});
172
181
  fr.save();
@@ -177,7 +186,7 @@ host.setAttribute('data-drawer-host', '');
177
186
  if (opt.label) host.setAttribute('aria-label', opt.label);
178
187
 
179
188
  var d = document.createElement('aside');
180
- d.className = 'drawer drawer--' + place;
189
+ d.className = 'drawer ' + placeCls;
181
190
  d.setAttribute('role', 'dialog');
182
191
  d.setAttribute('aria-modal', 'true');
183
192
  if (!d.id) d.id = 'drawer-' + (new Date()).getTime();
@@ -314,6 +314,10 @@ String(li.className).indexOf('dd__item') < 0) {
314
314
  li.className = li.className ? (li.className + ' dd__item') : 'dd__item';
315
315
  }
316
316
  if (li.hasAttribute('data-dd-sep')) {
317
+
318
+ if (String(li.className).indexOf('dd__sep') < 0) {
319
+ li.className = li.className ? (li.className + ' dd__sep') : 'dd__sep';
320
+ }
317
321
  li.setAttribute('role', 'separator');
318
322
  li.setAttribute('aria-hidden', 'true');
319
323
  } else if (!li.hasAttribute('role')) {
@@ -150,6 +150,12 @@ document.removeEventListener('click', onPointer, true);
150
150
  };
151
151
  }
152
152
 
153
+ var TOAST_VARIANT = {
154
+ success: 'toast--success',
155
+ error: 'toast--error',
156
+ warning: 'toast--warning'
157
+ };
158
+
153
159
  function toast(opts) {
154
160
  opts = opts || {};
155
161
 
@@ -164,7 +170,7 @@ document.body.appendChild(region);
164
170
  }
165
171
 
166
172
  var el = document.createElement('div');
167
- el.className = 'toast' + (opts.variant ? ' toast--' + opts.variant : '');
173
+ el.className = 'toast' + (TOAST_VARIANT[opts.variant] ? ' ' + TOAST_VARIANT[opts.variant] : '');
168
174
 
169
175
  var body = document.createElement('div');
170
176
  body.className = 'toast__body';
@@ -124,8 +124,8 @@ return r;
124
124
  }
125
125
 
126
126
  var CLS = {
127
- top: 'top', bottom: 'bottom',
128
- start: 'inset-inline-start', end: 'inset-inline-end',
127
+ top: 'tooltip--top', bottom: 'tooltip--bottom',
128
+ start: 'tooltip--inset-inline-start', end: 'tooltip--inset-inline-end',
129
129
  };
130
130
 
131
131
  function resolve(el, place) {
@@ -147,7 +147,7 @@ var pos = resolve(el, place);
147
147
  var id = 'tt' + (++uid);
148
148
  var tip = document.createElement('div');
149
149
  tip.id = id;
150
- tip.className = 'tooltip tooltip--' + CLS[pos];
150
+ tip.className = 'tooltip ' + CLS[pos];
151
151
  tip.setAttribute('role', 'tooltip');
152
152
  tip.textContent = text;
153
153
 
@@ -4,7 +4,8 @@
4
4
  var NS = 'http://www.w3.org/2000/svg';
5
5
  var uid = 0;
6
6
 
7
- var SERIES_STYLES = 5;
7
+ var SERIES_CLS = ['bar__s0', 'bar__s1', 'bar__s2', 'bar__s3', 'bar__s4'];
8
+ var SERIES_STYLES = SERIES_CLS.length;
8
9
 
9
10
  function pickKeyPoints(values) {
10
11
  var keys = {}, i, maxI = 0;
@@ -110,7 +111,7 @@ x = mode === 'group'
110
111
  yy = padT + plotH - vt;
111
112
 
112
113
  rect = el('rect', {
113
- 'class': 'bar__bar bar__s' + (s % SERIES_STYLES) +
114
+ 'class': 'bar__bar ' + SERIES_CLS[s % SERIES_STYLES] +
114
115
  (series[s].cls ? ' ' + series[s].cls : ''),
115
116
  x: x, y: yy, width: barW, height: vt - vb,
116
117
  });
@@ -181,7 +182,7 @@ series.forEach(function (se, si) {
181
182
  var li = document.createElement('li');
182
183
  li.className = 'bar__legend-item';
183
184
  var sw = document.createElement('span');
184
- sw.className = 'bar__legend-swatch bar__s' + (si % SERIES_STYLES) +
185
+ sw.className = 'bar__legend-swatch ' + SERIES_CLS[si % SERIES_STYLES] +
185
186
  (se.cls ? ' ' + se.cls : '');
186
187
 
187
188
  li.appendChild(sw);
package/dist/COSTS.md CHANGED
@@ -21,7 +21,7 @@
21
21
  | primitive | `badge` | 2.9 KB | 0.5 KB | — | **3.4 KB** | 24.6 KB | −21.2 KB |
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
- | primitive | `choice` | 2.9 KB | 1.1 KB | — | **4.0 KB** | 27.8 KB | −23.8 KB |
24
+ | primitive | `choice` | 2.9 KB | 1.1 KB | — | **4.1 KB** | 28.1 KB | −24.0 KB |
25
25
  | primitive | `combobox` | 2.9 KB | 1.0 KB | 5.4 KB | **9.3 KB** | 31.4 KB | −22.1 KB |
26
26
  | primitive | `date-range` | 2.9 KB | 0.8 KB | 2.5 KB | **6.3 KB** | 28.4 KB | −22.1 KB |
27
27
  | primitive | `delta` | 2.9 KB | 0.3 KB | — | **3.2 KB** | 24.6 KB | −21.4 KB |
@@ -37,23 +37,23 @@
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.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 |
40
+ | pattern | `drawer` | 2.9 KB | 0.8 KB | 2.6 KB | **6.3 KB** | 30.1 KB | −23.8 KB |
41
+ | pattern | `dropdown` | 2.9 KB | 0.8 KB | 3.5 KB | **7.2 KB** | 31.5 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 |
44
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 |
45
+ | pattern | `overlay` | 2.9 KB | 1.2 KB | 3.6 KB | **7.7 KB** | 38.5 KB | −30.8 KB |
46
46
  | pattern | `pagination` | 2.9 KB | 0.8 KB | 2.6 KB | **6.3 KB** | 32.4 KB | −26.1 KB |
47
47
  | pattern | `reveal` | 2.9 KB | 0.3 KB | 1.2 KB | **4.4 KB** | 26.4 KB | −22.0 KB |
48
48
  | pattern | `states` | 2.9 KB | 0.9 KB | — | **3.8 KB** | 26.3 KB | −22.5 KB |
49
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 |
50
+ | pattern | `tooltip` | 2.9 KB | 0.5 KB | 1.9 KB | **5.3 KB** | 28.5 KB | −23.2 KB |
51
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 一份):**70.2 KB**
56
- - 源码版(带注释)全库 gzip:356.4 KB
55
+ - 全部组件都用上(min,含 tokens 一份):**70.4 KB**
56
+ - 源码版(带注释)全库 gzip:358.8 KB
57
57
 
58
58
  > ⚠️ 源码版那个数字**不是**要付的钱:它包含我们的注释(全库 CSS 有 69% 是注释,字节口径)。
59
59
  > 它的用途只有一个 —— 让人看清"dist 到底省了多少"。
@@ -5,7 +5,7 @@
5
5
 
6
6
  | 项目 | 值 |
7
7
  |---|---|
8
- | 声明适用版本 | agentcss `0.25.1` |
8
+ | 声明适用版本 | agentcss `0.25.2` |
9
9
  | 声明日期 | 2026-11-03 |
10
10
  | 复核节奏 | 每次发版前重跑(`npm run gate` 内含全部证据) |
11
11
  | 范围 | 本库交付的 CSS / JS、全部 `demo.html`(组件页 + 图表页 + 组合页)、以及文档站生成的页面 |
package/index.html CHANGED
@@ -97,7 +97,7 @@ li a:active { background: var(--surface-sunken); }
97
97
  </p>
98
98
  </main>
99
99
  <footer class="wrap">
100
- <p class="note">0.25.1 · 零第三方运行时依赖</p>
100
+ <p class="note">0.25.2 · 零第三方运行时依赖</p>
101
101
  </footer>
102
102
  </body>
103
103
  </html>
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.1**.
3
+ > Generated from `ai/components.json` + `ai/pitfalls*.json` + `ai/behaviors.json` at version **0.25.2**.
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
 
@@ -33,7 +33,7 @@ Every subcommand accepts `--json`; failures print `{"ok":false,...}` and exit no
33
33
  | `sparkline` | `sparkline` | asset | stable | 7.2 KB | `sparkline.js` | 迷你趋势图:无坐标轴、纯形状,适合表格内嵌的一行走势 | `chart-multiline-label` |
34
34
  | `accordion` | `accordion` | pattern | stable | 18.0 KB | `accordion.js` | 可折叠分组 | — |
35
35
  | `content` | `prose` | pattern | stable | 11.1 KB | — | 长文排版容器(标题/段落/列表/引用/代码) | `single-scroll-container` `line-height-constant-sync` |
36
- | `drawer` | `drawer` | pattern | stable | 4.5 KB | `drawer.js` | 侧边抽屉,含遮罩 | `fixed-element-inventory` |
36
+ | `drawer` | `drawer` | pattern | stable | 5.9 KB | `drawer.js` | 侧边抽屉,含遮罩 | `fixed-element-inventory` |
37
37
  | `dropdown` | `dd` | pattern | stable | 3.9 KB | `dropdown.js` | 下拉菜单 | `popover-measure-after-render` |
38
38
  | `form-validation` | `form` | pattern | stable | 11.8 KB | — | 表单校验反馈与错误汇总 | — |
39
39
  | `list` | `list` | pattern | stable | 6.1 KB | `flip.js` | 键值列表/条目列表 | `empty-state-no-decoration` `text-injection-xss` |
@@ -48,7 +48,7 @@ Every subcommand accepts `--json`; failures print `{"ok":false,...}` and exit no
48
48
  | `badge` | `badge` | primitive | stable | 6.1 KB | — | 状态标签:计数、分类、结果标记 | — |
49
49
  | `button` | `btn` | primitive | stable | 15.7 KB | — | 动作触发:主/次/危险/纯文字四档 | — |
50
50
  | `card` | `card` | primitive | stable | 10.4 KB | — | 内容容器:媒体+正文+操作区三段 | — |
51
- | `choice` | `choice` | primitive | stable | 16.7 KB | — | 单选/多选/原生 select 外观的统一控件 | — |
51
+ | `choice` | `choice` | primitive | stable | 17.4 KB | — | 单选/多选/原生 select 外观的统一控件 | — |
52
52
  | `combobox` | `combo` | primitive | stable | 7.0 KB | `combobox.js` | 可搜索 + 可多选标签的输入控件 | — |
53
53
  | `date-range` | `drange` | primitive | stable | 6.0 KB | `date-range.js` | 日期区间选择,含预设快捷范围 | — |
54
54
  | `delta` | `delta` | primitive | stable | 5.5 KB | — | 变化量:涨跌方向 + 符号 + 颜色。只描述往哪边变,不判断好坏(等于好恶是 … | — |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentcss",
3
- "version": "0.25.1",
3
+ "version": "0.25.2",
4
4
  "description": "移动 Web 组件库:CSS + 可选行为脚本,零第三方运行时依赖。样式用 bundler 引入,交互行为用 script 标签引入。",
5
5
  "keywords": [
6
6
  "css",