agentcss 0.11.14 → 0.12.0
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 +54 -3
- package/01-tokens/market.css +48 -0
- package/01-tokens/tokens.css +66 -0
- package/02-primitives/combobox/combobox.js +1 -1
- package/02-primitives/date-range/date-range.js +1 -1
- package/02-primitives/delta/README.md +92 -0
- package/02-primitives/delta/delta.css +113 -0
- package/02-primitives/delta/demo.html +162 -0
- package/02-primitives/metric/README.md +93 -0
- package/02-primitives/metric/demo.html +176 -0
- package/02-primitives/metric/metric.css +157 -0
- package/02-primitives/popover/demo.html +1 -1
- package/02-primitives/popover/popover.js +1 -1
- package/02-primitives/select/select.js +1 -1
- package/03-patterns/accordion/accordion.js +25 -5
- package/03-patterns/drawer/drawer.js +1 -1
- package/03-patterns/dropdown/dropdown.js +1 -1
- package/03-patterns/list/flip.js +1 -1
- package/03-patterns/nav/nav.js +6 -3
- package/03-patterns/nav/toc.js +1 -1
- package/03-patterns/overlay/overlay.js +1 -1
- package/03-patterns/pagination/demo.html +1 -1
- package/03-patterns/pagination/pagination.js +9 -3
- package/03-patterns/reveal/reveal.js +4 -1
- package/03-patterns/tabs/tabs.js +12 -3
- package/03-patterns/tooltip/tooltip.js +1 -1
- package/03-patterns/tree/tree.js +1 -1
- package/04-recipes/report/demo.html +2 -2
- package/04-recipes/tierA-tokens.css +12 -6
- package/09-assets/echarts-adapter/demo.html +5 -5
- package/09-assets/model-viewer/demo.html +2 -2
- package/API.md +52 -3
- package/CHANGELOG.md +356 -0
- package/CONTRIBUTING.md +2 -1
- package/README.zh-CN.md +9 -7
- package/START-HERE.md +7 -5
- package/ai/START-HERE.md +1 -1
- package/ai/components.json +103 -8
- package/ai/components.meta.json +8 -0
- package/ai/deprecations.schema.json +2 -2
- package/ai/tokens.audience.json +3 -2
- package/ai/tokens.json +21 -2
- package/ai/tokens.tree.json +20 -2
- package/dist/01-tokens/market.css +1 -0
- package/dist/01-tokens/tokens.css +1 -1
- package/dist/02-primitives/combobox/combobox.js +1 -1
- package/dist/02-primitives/date-range/date-range.js +1 -1
- package/dist/02-primitives/delta/delta.css +1 -0
- package/dist/02-primitives/metric/metric.css +1 -0
- package/dist/02-primitives/popover/popover.js +1 -1
- package/dist/02-primitives/select/select.js +1 -1
- package/dist/03-patterns/accordion/accordion.js +10 -4
- package/dist/03-patterns/drawer/drawer.js +1 -1
- package/dist/03-patterns/dropdown/dropdown.js +1 -1
- package/dist/03-patterns/list/flip.js +1 -1
- package/dist/03-patterns/nav/nav.js +4 -3
- package/dist/03-patterns/nav/toc.js +1 -1
- package/dist/03-patterns/overlay/overlay.js +1 -1
- package/dist/03-patterns/pagination/pagination.js +4 -3
- package/dist/03-patterns/reveal/reveal.js +2 -1
- package/dist/03-patterns/tabs/tabs.js +8 -3
- package/dist/03-patterns/tooltip/tooltip.js +1 -1
- package/dist/03-patterns/tree/tree.js +1 -1
- package/dist/04-recipes/tierA-tokens.css +1 -1
- package/dist/COSTS.md +35 -33
- package/docs/ACCESSIBILITY.md +3 -3
- package/docs/CONVENTIONS.md +28 -2
- package/docs/DEPRECATIONS.md +128 -0
- package/esm/accordion.mjs +7 -0
- package/esm/combobox.mjs +7 -0
- package/esm/date-range.mjs +7 -0
- package/esm/drawer.mjs +7 -0
- package/esm/dropdown.mjs +7 -0
- package/esm/flip.mjs +7 -0
- package/esm/index.mjs +38 -0
- package/esm/nav.mjs +7 -0
- package/esm/overlay.mjs +7 -0
- package/esm/pagination.mjs +7 -0
- package/esm/popover.mjs +7 -0
- package/esm/reveal.mjs +7 -0
- package/esm/select.mjs +7 -0
- package/esm/tabs.mjs +7 -0
- package/esm/toc.mjs +7 -0
- package/esm/tooltip.mjs +7 -0
- package/esm/tree.mjs +7 -0
- package/index.html +4 -2
- package/package.json +10 -3
- package/types/index.d.ts +131 -1
package/README.zh-CN.md
CHANGED
|
@@ -83,9 +83,9 @@ npm install github:owain323/frontend-lib
|
|
|
83
83
|
|
|
84
84
|
## 组件一览
|
|
85
85
|
|
|
86
|
-
共 **
|
|
86
|
+
共 **37** 个(stable 33 / beta 4)。每个组件目录下有 `README.md`(为什么这么做)和 `demo.html`(能直接抄的结构)。
|
|
87
87
|
|
|
88
|
-
### primitives · 基础件(
|
|
88
|
+
### primitives · 基础件(15)
|
|
89
89
|
|
|
90
90
|
| 组件 | 根类名 | 用途 |
|
|
91
91
|
|---|---|---|
|
|
@@ -95,7 +95,9 @@ npm install github:owain323/frontend-lib
|
|
|
95
95
|
| `choice` | `choice` | 单选/多选/原生 select 外观的统一控件 |
|
|
96
96
|
| `combobox` | `combo` | 可搜索 + 可多选标签的输入控件 |
|
|
97
97
|
| `date-range` | `drange` | 日期区间选择,含预设快捷范围 |
|
|
98
|
+
| `delta` | `delta` | 变化量:涨跌方向 + 符号,**只描述方向不判断好坏** |
|
|
98
99
|
| `input` | `field` | 文本输入及其标签/帮助/错误三件套 |
|
|
100
|
+
| `metric` | `metric` | 指标块:一个标签 + 一个值 + 一句上下文,缺数是一等状态 |
|
|
99
101
|
| `popover` | `popover` | 锚定到触发元素的浮层 |
|
|
100
102
|
| `progress` | `progress` | 进度条与进度环 |
|
|
101
103
|
| `select` | `select` | 自定义下拉选择(非原生) |
|
|
@@ -181,8 +183,8 @@ dist/01-tokens/tokens.css ← 拷这个
|
|
|
181
183
|
01-tokens/tokens.css ← 源码(带 31.6 KB 注释),用于阅读
|
|
182
184
|
```
|
|
183
185
|
|
|
184
|
-
- **别拷源码目录**除非你要读它:全库 CSS 有
|
|
185
|
-
|
|
186
|
+
- **别拷源码目录**除非你要读它:全库 CSS 有 67% 是注释(字节口径;字符口径会低报 12 个百分点),`page.css` 一个文件
|
|
187
|
+
17.5 KB 里 15.1 KB 是注释。
|
|
186
188
|
- **JS 也拷 `dist/`**:那一份去了注释但没压缩(理由见「体积」一节)。
|
|
187
189
|
|
|
188
190
|
---
|
|
@@ -249,10 +251,10 @@ dist/01-tokens/tokens.css ← 拷这个
|
|
|
249
251
|
## 体积:默认给你的已经是干净产物
|
|
250
252
|
|
|
251
253
|
源码目录(`01-tokens/` `02-primitives/` …)里的 CSS **带着全部注释** —— 实测全库 CSS
|
|
252
|
-
有 **
|
|
254
|
+
有 **67% 是注释**(399.3 KB 原始里 267.8 KB),`page.css` 单个就有 86%。
|
|
253
255
|
|
|
254
256
|
那些注释是写给你看的取舍理由(为什么这么定、踩过什么坑),不是写给你浏览器看的。
|
|
255
|
-
**注释让你看代码时处处撞墙,构建工具还会把
|
|
257
|
+
**注释让你看代码时处处撞墙,构建工具还会把 67% 的字节原样传下去。**
|
|
256
258
|
|
|
257
259
|
⇒ 所以 `import 'agentcss/tokens.css'` **默认给你去注释后的产物**,
|
|
258
260
|
源码版放在 `agentcss/src/*`:
|
|
@@ -343,7 +345,7 @@ import 'agentcss/dist/02-primitives/button/button.css';
|
|
|
343
345
|
| `ai/` | **机器可读契约**:`components.json` / `tokens.json` / schema / 校验器 / 命令行 |
|
|
344
346
|
| `adapters/` | 场景适配层(如演示文稿),**不进核心** |
|
|
345
347
|
| `benchmark/` | 兼容性基准(10 类编辑意图,当前无模型实测记录) |
|
|
346
|
-
| `docs/` | `INVARIANT.md`(不变式)· `CONVENTIONS.md`(全局约定)· `ACCESSIBILITY.md`(无障碍)· `AI-CONTRACT.md`(与 AI 协作的契约)· `LAYER-BASELINE.md`(引擎能力基线) |
|
|
348
|
+
| `docs/` | `INVARIANT.md`(不变式)· `CONVENTIONS.md`(全局约定)· `ACCESSIBILITY.md`(无障碍)· `DEPRECATIONS.md`(弃用与移除)· `AI-CONTRACT.md`(与 AI 协作的契约)· `LAYER-BASELINE.md`(引擎能力基线) |
|
|
347
349
|
| `types/` | TypeScript 类型定义(描述 `window` 上的全局对象) |
|
|
348
350
|
|
|
349
351
|
## 示例与验证状态
|
package/START-HERE.md
CHANGED
|
@@ -47,20 +47,22 @@
|
|
|
47
47
|
| 进度条 / 环 | `02-primitives/progress/progress.css` | 172 | — | 有耗时过程要给进度就要 |
|
|
48
48
|
| 浮层气泡 | `02-primitives/popover/popover.css` | 187 | **必需 331** (`popover.js`) | 要一段信息贴着触发元素浮出来就要 |
|
|
49
49
|
| 日期区间 | `02-primitives/date-range/date-range.css` | 206 | **必需 301** (`date-range.js`) | 要选起止日期就要 |
|
|
50
|
-
| 标签页 | `03-patterns/tabs/tabs.css` | 172 | **必需
|
|
51
|
-
| 折叠面板(beta) | `03-patterns/accordion/accordion.css` | 453 | **必需
|
|
50
|
+
| 标签页 | `03-patterns/tabs/tabs.css` | 172 | **必需 316** (`tabs.js`) | 同层级内容切换就要 |
|
|
51
|
+
| 折叠面板(beta) | `03-patterns/accordion/accordion.css` | 453 | **必需 389** (`accordion.js`) | 长表单分段就要 |
|
|
52
52
|
| 动作菜单(beta) | `03-patterns/dropdown/dropdown.css` | 135 | **必需 451** (`dropdown.js`) | 要一组动作(新建 / 导出 / 删除)就要 |
|
|
53
53
|
| 文字提示 | `03-patterns/tooltip/tooltip.css` | 89 | **必需 288** (`tooltip.js`) | 图标按钮或缩写需要一句话解释就要 |
|
|
54
|
-
| 分页 | `03-patterns/pagination/pagination.css` | 195 | **必需
|
|
54
|
+
| 分页 | `03-patterns/pagination/pagination.css` | 195 | **必需 401** (`pagination.js`) | 数据多到要翻页就要 |
|
|
55
55
|
| 树形 | `03-patterns/tree/tree.css` | 122 | **必需 464** (`tree.js`) | 层级数据(文件 / 组织 / 分类)要展开就要 |
|
|
56
56
|
| 侧边抽屉(beta) | `03-patterns/drawer/drawer.css` | 129 | **必需 258** (`drawer.js`) | 要从侧边滑出面板就要 |
|
|
57
57
|
| 弹窗 / 吐司(beta) | `03-patterns/overlay/overlay.css` | 319 | **必需 563** (`overlay.js`) | 需要弹层(吐司 / 模态)就要 |
|
|
58
58
|
| 状态(空 / 加载 / 错 / 成功) | `03-patterns/states/states.css` | 252 | — | **凡是会异步取数就要** |
|
|
59
59
|
| 表单校验 | `03-patterns/form-validation/form-validation.css` | 263 | — | 提交前要校验就要 |
|
|
60
60
|
| 列表增删 | `03-patterns/list/list.css` | 162 | 可选 201 (`flip.js`,FLIP 增删动画,纯增强) | 列表会动态增删就要 |
|
|
61
|
-
| 导航 / 目录 | `03-patterns/nav/nav.css` | 314 | **必需
|
|
61
|
+
| 导航 / 目录 | `03-patterns/nav/nav.css` | 314 | **必需 433** (`nav.js`) · 可选 111 (`toc.js`,自动生成目录,纯增强) | 顶部要导航,或长文要目录就要 |
|
|
62
62
|
| 长文排版 | `03-patterns/content/content.css` | 286 | — | 写文档 / 长文就要 |
|
|
63
|
-
|
|
|
63
|
+
| delta | `02-primitives/delta/delta.css` | 113 | — | |
|
|
64
|
+
| metric | `02-primitives/metric/metric.css` | 157 | — | |
|
|
65
|
+
| reveal | `03-patterns/reveal/reveal.css` | 93 | 可选 175 (`reveal.js`,入场动效,纯增强;没有它内容直接可见) | |
|
|
64
66
|
| analysis-report | `04-recipes/analysis-report/analysis-report.css` | 187 | — | |
|
|
65
67
|
| detail-page | `04-recipes/detail-page/detail-page.css` | 190 | — | |
|
|
66
68
|
| report | `04-recipes/report/report.css` | 364 | — | |
|
package/ai/START-HERE.md
CHANGED
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
> 它的值直接从 `ai/components.json` 与目录实际内容读出来 —— **不信上面的说法,信这个**。
|
|
31
31
|
|
|
32
32
|
<!-- ==== AI-INVENTORY-BEGIN ==== -->
|
|
33
|
-
- 组件 **
|
|
33
|
+
- 组件 **37** 个(`beta` 4 · `stable` 33)
|
|
34
34
|
- `04-recipes/`(页面级示例):`analysis-report`(组合型研究报告:正文 + 辅助栏并排,窄屏退回单栏) · `data-showcase`(四种数据表达方式对照:我到底该用哪个) · `detail-page`(实体详情页骨架:字段齐全 / 部分缺失 / 无数据,三态同构(DOM 不变)) · `longform`(单栏长文排版与阅读节奏) · `report`(报告版式系统 v1:共享基础 + 三种版式取舍(杂志 / 科研技术 / 金融研究)) · `table`(专业数据表格:列级格式与单位,三种用途预设)
|
|
35
35
|
- `09-assets/`(图表与可视化):`bar`(柱状图,含图表规范的裁剪铁律) · `echarts-adapter`(把令牌喂给 ECharts,按需引入;本库不含 ECharts) · `model-viewer`(惰性加载的 3D 模型查看器) · `scientific-plot`(二维科学绘图:坐标轴 / 误差棒 / 置信区间带 / 对数轴) · `sparkline`(迷你趋势线,没有坐标轴的走势提示)
|
|
36
36
|
<!-- ==== AI-INVENTORY-END ==== -->
|
package/ai/components.json
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
3
|
"generatedBy": "05-audit/gen-ai-contract.py",
|
|
4
|
-
"libraryVersion": "0.
|
|
4
|
+
"libraryVersion": "0.12.0",
|
|
5
5
|
"$comment": "机器可读的组件契约。slots = BEM 元素名(在本库里元素名就是插槽名),states.enum = 组件会在 DOM 上写出的 data-* 取值,states.legacyClass = 仍未收敛到 data 属性的历史状态类(INVARIANT I-8 未达标)。",
|
|
6
6
|
"maturityCriteria": {
|
|
7
7
|
"alpha": "缺 demo.html 或缺 05-audit 下的专属门禁 ⇒ 还没被机器验证过,不要用",
|
|
8
8
|
"beta": "有 demo + 专属门禁,但**下面至少有一条没过**:① 状态仍用 .is-* class 表达(违反 INVARIANT I-8);② 该收编到微行为核的行为还是**手写副本**(manual)或**根本没做**(gap) ⇒ 改一处不会全库跟着变(I-14 的病)",
|
|
9
9
|
"stable": "以上四条全过:有 demo + 专属门禁 + 状态全在 data-* 属性上 + 行为零欠账",
|
|
10
10
|
"$note": "成熟度是【计算出来的】,不是拍的。手写把某个组件改成 stable 而它还有 manual / gap ⇒ 门禁会红。",
|
|
11
|
-
"$whyFourth": "🔴 为什么第四条判据不能省:用前三条时多数组件会**全是 stable** ⇒ ladder 没有任何鉴别力(对标 Primer 六档阶梯,每档都有硬判据)。补上「行为欠账」这一条后:**stable
|
|
11
|
+
"$whyFourth": "🔴 为什么第四条判据不能省:用前三条时多数组件会**全是 stable** ⇒ ladder 没有任何鉴别力(对标 Primer 六档阶梯,每档都有硬判据)。补上「行为欠账」这一条后:**stable 33 / beta 4**(本行由生成器算出,不要手改)。",
|
|
12
12
|
"$strictImpact": "⚠️ strict 档位只放行 stable ⇒ 4 个组件在 strict 下不可用:accordion / drawer / dropdown / overlay。放宽 strict 会让「未收编的手写行为」进入生产路径。(本行由生成器算出,不要手改)"
|
|
13
13
|
},
|
|
14
14
|
"summary": {
|
|
15
|
-
"total":
|
|
15
|
+
"total": 37,
|
|
16
16
|
"byMaturity": {
|
|
17
|
-
"stable":
|
|
17
|
+
"stable": 33,
|
|
18
18
|
"beta": 4
|
|
19
19
|
},
|
|
20
20
|
"byTier": {
|
|
21
|
-
"primitive":
|
|
21
|
+
"primitive": 15,
|
|
22
22
|
"pattern": 14,
|
|
23
23
|
"recipe": 4,
|
|
24
24
|
"asset": 4
|
|
@@ -125,7 +125,9 @@
|
|
|
125
125
|
},
|
|
126
126
|
"aria": {
|
|
127
127
|
"roles": [],
|
|
128
|
-
"attrs": [
|
|
128
|
+
"attrs": [
|
|
129
|
+
"label"
|
|
130
|
+
]
|
|
129
131
|
},
|
|
130
132
|
"usesOtherNamespaces": [],
|
|
131
133
|
"global": "ModelViewer",
|
|
@@ -1351,6 +1353,49 @@
|
|
|
1351
1353
|
"globalAlso": [],
|
|
1352
1354
|
"behaviorRef": "API.md#date-range"
|
|
1353
1355
|
},
|
|
1356
|
+
{
|
|
1357
|
+
"id": "delta",
|
|
1358
|
+
"tier": "primitive",
|
|
1359
|
+
"purpose": "变化量:涨跌方向 + 符号 + 颜色。只描述往哪边变,不判断好坏(等于好恶是 badge 的事,会计正负是 table 的事)",
|
|
1360
|
+
"rootClass": "delta",
|
|
1361
|
+
"maturity": "stable",
|
|
1362
|
+
"maturityReasons": {
|
|
1363
|
+
"hasDemo": true,
|
|
1364
|
+
"hasDedicatedGate": true,
|
|
1365
|
+
"statesOnDomAttributes": true,
|
|
1366
|
+
"behaviorDebt": []
|
|
1367
|
+
},
|
|
1368
|
+
"gates": [
|
|
1369
|
+
"delta-check.js"
|
|
1370
|
+
],
|
|
1371
|
+
"files": {
|
|
1372
|
+
"css": "02-primitives/delta/delta.css",
|
|
1373
|
+
"js": null,
|
|
1374
|
+
"jsAlso": [],
|
|
1375
|
+
"demo": "02-primitives/delta/demo.html"
|
|
1376
|
+
},
|
|
1377
|
+
"slots": [],
|
|
1378
|
+
"variants": [
|
|
1379
|
+
"delta--arrow",
|
|
1380
|
+
"delta--down",
|
|
1381
|
+
"delta--flat",
|
|
1382
|
+
"delta--sm",
|
|
1383
|
+
"delta--up"
|
|
1384
|
+
],
|
|
1385
|
+
"states": {
|
|
1386
|
+
"enum": {},
|
|
1387
|
+
"boolean": [],
|
|
1388
|
+
"legacyClass": []
|
|
1389
|
+
},
|
|
1390
|
+
"aria": {
|
|
1391
|
+
"roles": [],
|
|
1392
|
+
"attrs": []
|
|
1393
|
+
},
|
|
1394
|
+
"usesOtherNamespaces": [],
|
|
1395
|
+
"global": null,
|
|
1396
|
+
"globalAlso": [],
|
|
1397
|
+
"behaviorRef": "API.md#delta"
|
|
1398
|
+
},
|
|
1354
1399
|
{
|
|
1355
1400
|
"id": "input",
|
|
1356
1401
|
"tier": "primitive",
|
|
@@ -1408,6 +1453,54 @@
|
|
|
1408
1453
|
"globalAlso": [],
|
|
1409
1454
|
"behaviorRef": "API.md#input"
|
|
1410
1455
|
},
|
|
1456
|
+
{
|
|
1457
|
+
"id": "metric",
|
|
1458
|
+
"tier": "primitive",
|
|
1459
|
+
"purpose": "指标块:一个标签 + 一个值 + 一句上下文。数字等宽、单位分离、缺数是一等状态",
|
|
1460
|
+
"rootClass": "metric",
|
|
1461
|
+
"maturity": "stable",
|
|
1462
|
+
"maturityReasons": {
|
|
1463
|
+
"hasDemo": true,
|
|
1464
|
+
"hasDedicatedGate": true,
|
|
1465
|
+
"statesOnDomAttributes": true,
|
|
1466
|
+
"behaviorDebt": []
|
|
1467
|
+
},
|
|
1468
|
+
"gates": [
|
|
1469
|
+
"metric-check.js"
|
|
1470
|
+
],
|
|
1471
|
+
"files": {
|
|
1472
|
+
"css": "02-primitives/metric/metric.css",
|
|
1473
|
+
"js": null,
|
|
1474
|
+
"jsAlso": [],
|
|
1475
|
+
"demo": "02-primitives/metric/demo.html"
|
|
1476
|
+
},
|
|
1477
|
+
"slots": [
|
|
1478
|
+
"metric__foot",
|
|
1479
|
+
"metric__label",
|
|
1480
|
+
"metric__note",
|
|
1481
|
+
"metric__spark",
|
|
1482
|
+
"metric__unit",
|
|
1483
|
+
"metric__value"
|
|
1484
|
+
],
|
|
1485
|
+
"variants": [
|
|
1486
|
+
"metric--lg",
|
|
1487
|
+
"metric--null",
|
|
1488
|
+
"metric--sm"
|
|
1489
|
+
],
|
|
1490
|
+
"states": {
|
|
1491
|
+
"enum": {},
|
|
1492
|
+
"boolean": [],
|
|
1493
|
+
"legacyClass": []
|
|
1494
|
+
},
|
|
1495
|
+
"aria": {
|
|
1496
|
+
"roles": [],
|
|
1497
|
+
"attrs": []
|
|
1498
|
+
},
|
|
1499
|
+
"usesOtherNamespaces": [],
|
|
1500
|
+
"global": null,
|
|
1501
|
+
"globalAlso": [],
|
|
1502
|
+
"behaviorRef": "API.md#metric"
|
|
1503
|
+
},
|
|
1411
1504
|
{
|
|
1412
1505
|
"id": "popover",
|
|
1413
1506
|
"tier": "primitive",
|
|
@@ -1455,7 +1548,8 @@
|
|
|
1455
1548
|
"main"
|
|
1456
1549
|
],
|
|
1457
1550
|
"attrs": [
|
|
1458
|
-
"hidden"
|
|
1551
|
+
"hidden",
|
|
1552
|
+
"label"
|
|
1459
1553
|
]
|
|
1460
1554
|
},
|
|
1461
1555
|
"usesOtherNamespaces": [],
|
|
@@ -1899,7 +1993,8 @@
|
|
|
1899
1993
|
"aria": {
|
|
1900
1994
|
"roles": [],
|
|
1901
1995
|
"attrs": [
|
|
1902
|
-
"hidden"
|
|
1996
|
+
"hidden",
|
|
1997
|
+
"label"
|
|
1903
1998
|
]
|
|
1904
1999
|
},
|
|
1905
2000
|
"usesOtherNamespaces": [],
|
package/ai/components.meta.json
CHANGED
|
@@ -58,6 +58,10 @@
|
|
|
58
58
|
"rootClass": "drange",
|
|
59
59
|
"purpose": "日期区间选择,含预设快捷范围"
|
|
60
60
|
},
|
|
61
|
+
"delta": {
|
|
62
|
+
"rootClass": "delta",
|
|
63
|
+
"purpose": "变化量:涨跌方向 + 符号 + 颜色。只描述往哪边变,不判断好坏(等于好恶是 badge 的事,会计正负是 table 的事)"
|
|
64
|
+
},
|
|
61
65
|
"drawer": {
|
|
62
66
|
"rootClass": "drawer",
|
|
63
67
|
"purpose": "侧边抽屉,含遮罩"
|
|
@@ -83,6 +87,10 @@
|
|
|
83
87
|
"tier": "asset",
|
|
84
88
|
"purpose": "3D 模型查看器:令牌驱动样式,不含渲染库本体"
|
|
85
89
|
},
|
|
90
|
+
"metric": {
|
|
91
|
+
"rootClass": "metric",
|
|
92
|
+
"purpose": "指标块:一个标签 + 一个值 + 一句上下文。数字等宽、单位分离、缺数是一等状态"
|
|
93
|
+
},
|
|
86
94
|
"nav": {
|
|
87
95
|
"rootClass": "nav",
|
|
88
96
|
"purpose": "顶部导航与目录"
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"required": ["id", "kind", "name", "deprecatedIn", "removeIn", "reason"],
|
|
40
40
|
"properties": {
|
|
41
41
|
"id": { "type": "string", "minLength": 1 },
|
|
42
|
-
"kind": { "enum": ["token", "class"] },
|
|
42
|
+
"kind": { "enum": ["token", "class", "api", "event"] },
|
|
43
43
|
"name": { "type": "string", "minLength": 1 },
|
|
44
44
|
"deprecatedIn": { "type": "string", "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$" },
|
|
45
45
|
"removeIn": { "type": "string", "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$" },
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
"type": "object",
|
|
62
62
|
"required": ["kind", "name", "removedIn"],
|
|
63
63
|
"properties": {
|
|
64
|
-
"kind": { "enum": ["token", "class"] },
|
|
64
|
+
"kind": { "enum": ["token", "class", "api", "event"] },
|
|
65
65
|
"name": { "type": "string", "minLength": 1 },
|
|
66
66
|
"removedIn": { "type": "string", "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$" },
|
|
67
67
|
"replacement": {
|
package/ai/tokens.audience.json
CHANGED
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
"--border": { "audience": "public", "why": "描边三档:控件 / 装饰 / 强装饰" },
|
|
15
15
|
"--bp-": { "audience": "reference", "why": "断点:CSS media query 条件里用不了 var(),只能当锚点给流体计算和脚本查询" },
|
|
16
16
|
"--danger": { "audience": "public", "why": "危险色(--danger / -hover / -bg)" },
|
|
17
|
+
"--dir-": { "audience": "public", "why": "涨跌方向色(--dir-up / -down)。**方向 ≠ 好恶**:--danger/--success 是评价(错了/成了),方向是事实(涨了/跌了)。同一件事会同时成立而结论相反 —— 「研发费用同比 +38%」是涨,但那是坏消息。默认 A 股口径红涨绿跌,`[data-market=\"intl\"]` 整体对调" },
|
|
17
18
|
"--dur-": { "audience": "public", "why": "时长阶梯:快 / 基准 / 慢" },
|
|
18
19
|
"--ease-": { "audience": "public", "why": "缓动阶梯:默认 / 进出 / 滑入" },
|
|
19
20
|
"--fs-": { "audience": "public", "why": "字号阶梯:阶梯允许有暂未使用的档位(那是阶梯,不是死代码)" },
|
|
@@ -49,7 +50,7 @@
|
|
|
49
50
|
"tokens": {},
|
|
50
51
|
|
|
51
52
|
"budget": {
|
|
52
|
-
"orphan":
|
|
53
|
-
"$comment": "棘轮:孤儿令牌总数只能降。降了就把这个数字一起改小,不许偷偷升。2026-10-10:--lh-loose / --fs-xl 被新增 recipe 引用,7→5;同日 04-recipes/report 改在自身层内重定义边注宽 ⇒ --measure-aside 由『被引用』回到『无引用』,5→5→再核为 4。"
|
|
53
|
+
"orphan": 3,
|
|
54
|
+
"$comment": "棘轮:孤儿令牌总数只能降。降了就把这个数字一起改小,不许偷偷升。2026-10-10:--lh-loose / --fs-xl 被新增 recipe 引用,7→5;同日 04-recipes/report 改在自身层内重定义边注宽 ⇒ --measure-aside 由『被引用』回到『无引用』,5→5→再核为 4。2026-10-29:metric 引用 --tracking-normal ⇒ 4→3。"
|
|
54
55
|
}
|
|
55
56
|
}
|
package/ai/tokens.json
CHANGED
|
@@ -224,6 +224,16 @@
|
|
|
224
224
|
"$value": "#e8f1f8",
|
|
225
225
|
"$type": "color"
|
|
226
226
|
},
|
|
227
|
+
"--dir-up": {
|
|
228
|
+
"$value": "#c0392b",
|
|
229
|
+
"$type": "color",
|
|
230
|
+
"$description": "---------------------------------------------------------------- 方向色"
|
|
231
|
+
},
|
|
232
|
+
"--dir-down": {
|
|
233
|
+
"$value": "#2f6b3a",
|
|
234
|
+
"$type": "color",
|
|
235
|
+
"$description": "涨:默认红"
|
|
236
|
+
},
|
|
227
237
|
"--accent": {
|
|
228
238
|
"$value": "#1b4d8f",
|
|
229
239
|
"$type": "color",
|
|
@@ -621,6 +631,15 @@
|
|
|
621
631
|
"$value": "#16241A",
|
|
622
632
|
"$type": "color"
|
|
623
633
|
},
|
|
634
|
+
"--dir-up": {
|
|
635
|
+
"$value": "#E07A6E",
|
|
636
|
+
"$type": "color",
|
|
637
|
+
"$description": "方向色(暗色):与 success / danger 同值,理由见浅色段。"
|
|
638
|
+
},
|
|
639
|
+
"--dir-down": {
|
|
640
|
+
"$value": "#6FAA7A",
|
|
641
|
+
"$type": "color"
|
|
642
|
+
},
|
|
624
643
|
"--warning": {
|
|
625
644
|
"$value": "#C99A3F",
|
|
626
645
|
"$type": "color"
|
|
@@ -676,8 +695,8 @@
|
|
|
676
695
|
}
|
|
677
696
|
},
|
|
678
697
|
"coverage": {
|
|
679
|
-
"lightCount":
|
|
680
|
-
"darkCount":
|
|
698
|
+
"lightCount": 112,
|
|
699
|
+
"darkCount": 35,
|
|
681
700
|
"onlyInDark": [],
|
|
682
701
|
"onlyInLight": [
|
|
683
702
|
"--bp-lg",
|
package/ai/tokens.tree.json
CHANGED
|
@@ -42,6 +42,14 @@
|
|
|
42
42
|
"value": "#8f1e17",
|
|
43
43
|
"type": "color"
|
|
44
44
|
},
|
|
45
|
+
"dir-down": {
|
|
46
|
+
"value": "#2f6b3a",
|
|
47
|
+
"type": "color"
|
|
48
|
+
},
|
|
49
|
+
"dir-up": {
|
|
50
|
+
"value": "#c0392b",
|
|
51
|
+
"type": "color"
|
|
52
|
+
},
|
|
45
53
|
"info": {
|
|
46
54
|
"value": "#1d5f8a",
|
|
47
55
|
"type": "color"
|
|
@@ -516,6 +524,14 @@
|
|
|
516
524
|
"value": "#F09A90",
|
|
517
525
|
"type": "color"
|
|
518
526
|
},
|
|
527
|
+
"dir-down": {
|
|
528
|
+
"value": "#6FAA7A",
|
|
529
|
+
"type": "color"
|
|
530
|
+
},
|
|
531
|
+
"dir-up": {
|
|
532
|
+
"value": "#E07A6E",
|
|
533
|
+
"type": "color"
|
|
534
|
+
},
|
|
519
535
|
"info": {
|
|
520
536
|
"value": "#5B9BC4",
|
|
521
537
|
"type": "color"
|
|
@@ -629,6 +645,8 @@
|
|
|
629
645
|
"--danger": "color/danger",
|
|
630
646
|
"--danger-bg": "color/danger-bg",
|
|
631
647
|
"--danger-hover": "color/danger-hover",
|
|
648
|
+
"--dir-down": "color/dir-down",
|
|
649
|
+
"--dir-up": "color/dir-up",
|
|
632
650
|
"--dur-base": "duration/base",
|
|
633
651
|
"--dur-fast": "duration/fast",
|
|
634
652
|
"--dur-slow": "duration/slow",
|
|
@@ -728,8 +746,8 @@
|
|
|
728
746
|
"--z-toast": "zIndex/toast"
|
|
729
747
|
},
|
|
730
748
|
"meta": {
|
|
731
|
-
"lightCount":
|
|
732
|
-
"darkCount":
|
|
749
|
+
"lightCount": 112,
|
|
750
|
+
"darkCount": 35,
|
|
733
751
|
"categories": [
|
|
734
752
|
"breakpoint",
|
|
735
753
|
"color",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root[data-market="intl"], [data-market="intl"] {--dir-up:var(--raw-dir-down);--dir-down:var(--raw-dir-up);}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
:root {--raw-paper:#f6f7f8;--raw-surface:#ffffff;--raw-surface-sunken:#f1f3f5;--raw-surface-raised:#ffffff;--raw-scrollbar-thumb:#7A808A;--raw-scrollbar-thumb-hov:#6E747E;--raw-text-primary:#15181c;--raw-text-secondary:#4f555e;--raw-text-tertiary:#606770;--raw-text-on-accent:#ffffff;--raw-text-on-solid:#ffffff;--raw-skeleton-bg:#e9ecef;--raw-skeleton-shimmer:rgba(255, 255, 255, 0.72);--raw-border-control:#868b94;--raw-border-decor:#e2e5e9;--raw-border-decor-str:#c8cdd4;--raw-danger:#c0392b;--raw-danger-hover:#8f1e17;--raw-scrim:rgba(21, 24, 28, 0.4);--raw-success:#2f6b3a;--raw-warning:#8a5a00;--raw-info:#1d5f8a;--raw-danger-bg:#fdeeec;--raw-success-bg:#eaf2e6;--raw-warning-bg:#fbf1dd;--raw-info-bg:#e8f1f8;--raw-accent:#1b4d8f;--raw-switch-on:#1b4d8f;--raw-accent-hover:#163a6d;--raw-accent-soft:#e6eef7;--raw-tooltip-bg:#15181c;--raw-tooltip-fg:#f6f7f8;--raw-tooltip-border:#15181c;--paper:var(--raw-paper);--surface:var(--raw-surface);--surface-sunken:var(--raw-surface-sunken);--surface-raised:var(--raw-surface-raised);--scrollbar-size:10px;--scrollbar-size-thin:6px;--scrollbar-thumb:var(--raw-scrollbar-thumb);--scrollbar-thumb-hov:var(--raw-scrollbar-thumb-hov);--scrollbar-radius:5px;--text-primary:var(--raw-text-primary);--text-secondary:var(--raw-text-secondary);--text-tertiary:var(--raw-text-tertiary);--text-on-accent:var(--raw-text-on-accent);--text-on-solid:var(--raw-text-on-solid);--skeleton-bg:var(--raw-skeleton-bg);--skeleton-shimmer:var(--raw-skeleton-shimmer);--skeleton-h:1em;--skeleton-size:40px;--skeleton-duration:1.4s;--ease-out:cubic-bezier(0.23, 1, 0.32, 1);--progress-h:6px;--progress-dur:240ms;--r-full:999px;--ring-size:64px;--ring-thickness:8px;--progress:0%;--progress-num:0;--z-popover:60;--popover-min-w:200px;--popover-max-w:320px;--popover-p:var(--sp-3);--popover-gap:8px;--popover-dur:140ms;--border-control:var(--raw-border-control);--border-decor:var(--raw-border-decor);--border-decor-str:var(--raw-border-decor-str);--danger:var(--raw-danger);--danger-hover:var(--raw-danger-hover);--scrim:var(--raw-scrim);--success:var(--raw-success);--warning:var(--raw-warning);--info:var(--raw-info);--danger-bg:var(--raw-danger-bg);--success-bg:var(--raw-success-bg);--warning-bg:var(--raw-warning-bg);--info-bg:var(--raw-info-bg);--accent:var(--raw-accent);--switch-on:var(--raw-switch-on);--accent-hover:var(--raw-accent-hover);--accent-soft:var(--raw-accent-soft);--tooltip-bg:var(--raw-tooltip-bg);--tooltip-fg:var(--raw-tooltip-fg);--tooltip-border:var(--raw-tooltip-border);--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:clamp(1rem, 0.95rem + 0.3vw, 1.25rem);--sp-5:clamp(1.25rem, 1.15rem + 0.7vw, 1.75rem);--sp-6:clamp(1.5rem, 1.3rem + 1.2vw, 2.25rem);--sp-7:clamp(2rem, 1.7rem + 1.8vw, 3.5rem);--sp-8:clamp(2.5rem, 2.1rem + 2.4vw, 4.5rem);--bp-sm:30rem;--bp-md:48rem;--bp-lg:64rem;--bp-xl:80rem;--fs-xs:0.75rem;--fs-sm:0.875rem;--fs-base:clamp(1rem, 0.95rem + 0.3vw, 1.125rem);--fs-md:clamp(1.125rem, 1.05rem + 0.5vw, 1.3125rem);--fs-lg:clamp(1.3125rem, 1.2rem + 0.7vw, 1.5rem);--fs-xl:clamp(1.5rem, 1.3rem + 1.2vw, 1.875rem);--fs-2xl:clamp(1.75rem, 1.45rem + 1.8vw, 2.5rem);--lh-tight:1.25;--lh-base:1.7;--lh-loose:1.85;--measure-page:52rem;--tracking-title:-0.02em;--r-sm:6px;--r-xs:3px;--r-md:10px;--r-lg:14px;--r-pill:999px;--shadow-1:0 1px 2px rgba(31, 29, 25, 0.05), 0 1px 3px rgba(31, 29, 25, 0.06);--shadow-2:0 2px 4px rgba(31, 29, 25, 0.05), 0 6px 16px rgba(31, 29, 25, 0.08);--dur-fast:120ms;--dur-base:180ms;--dur-slow:280ms;--ease-out:cubic-bezier(0.23, 1, 0.32, 1);--ease-in-out:cubic-bezier(0.77, 0, 0.175, 1);--ease-drawer:cubic-bezier(0.32, 0.72, 0, 1);--lift-sm:1px;--lift-md:2px;--lift-lg:8px;--z-base:0;--z-sticky:10;--z-header:20;--z-raised:5;--z-overlay:30;--z-modal:40;--z-toast:50;--sz-touch:44px;--sz-touch-sm:32px;}@media (prefers-reduced-motion:reduce) {*, *::before, *::after {animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;scroll-behavior:auto !important;}}:focus-visible {outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--r-sm);}:root {--measure-prose:34em;--measure-title:20em;--measure-lede:32em;--measure-pull:30em;--measure-aside:32em;}:root:lang(en), :root:lang(en-US), :root:lang(en-GB), :root:lang(fr), :root:lang(de), :root:lang(es), :root:lang(pt), :root:lang(ru), :root:lang(el), :root:lang(tr), :root:lang(vi) {--measure-prose:68ch;--measure-title:34ch;--measure-lede:62ch;--measure-pull:58ch;--measure-aside:56ch;}:root:lang(ar) {--measure-prose:60ch;--measure-title:30ch;--measure-lede:56ch;--measure-pull:52ch;--measure-aside:50ch;}:root:lang(hi), :root:lang(th), :root:lang(km), :root:lang(my) {--measure-prose:56ch;--measure-title:28ch;--measure-lede:52ch;--measure-pull:48ch;--measure-aside:46ch;}:root:lang(zh), :root:lang(zh-CN), :root:lang(zh-TW), :root:lang(ja), :root:lang(ko) {--measure-prose:34em;--measure-title:20em;--measure-lede:32em;--measure-pull:30em;--measure-aside:32em;}@media (prefers-color-scheme:dark) {:root:not([data-theme="light"]) {--raw-paper:#14171A;--raw-surface:#1C2024;--raw-surface-raised:#232830;--raw-surface-sunken:#1A1D21;--raw-scrollbar-thumb:#6E747E;--raw-scrollbar-thumb-hov:#7D828A;--raw-border-decor:#2A3038;--raw-border-decor-str:#3A424C;--raw-border-control:#8A9099;--raw-text-primary:#E4E7EA;--raw-text-secondary:#AEB6C0;--raw-text-tertiary:#9BA3AD;--raw-text-on-accent:#0D1114;--raw-text-on-solid:#0D1114;--raw-skeleton-bg:#2E343C;--raw-skeleton-shimmer:rgba(255, 255, 255, 0.06);--raw-danger:#E07A6E;--raw-danger-hover:#F09A90;--raw-danger-bg:#341D1A;--raw-success:#6FAA7A;--raw-success-bg:#16241A;--raw-warning:#C99A3F;--raw-warning-bg:#242A31;--raw-info:#5B9BC4;--raw-info-bg:#13242F;--raw-accent:#7AA9DE;--raw-switch-on:#3E6EA8;--raw-accent-hover:#8FB8E6;--raw-accent-soft:#1C2C3D;--raw-tooltip-bg:#232830;--raw-tooltip-fg:#E4E7EA;--raw-tooltip-border:#2A3038;--raw-scrim:rgba(0, 0, 0, 0.62);}}[data-theme="light"] {--raw-accent:#1b4d8f;--raw-accent-hover:#163a6d;--raw-accent-soft:#e6eef7;--raw-border-control:#868b94;--raw-border-decor:#e2e5e9;--raw-border-decor-str:#c8cdd4;--raw-danger:#c0392b;--raw-danger-bg:#fdeeec;--raw-danger-hover:#8f1e17;--raw-info:#1d5f8a;--raw-info-bg:#e8f1f8;--raw-paper:#f6f7f8;--raw-scrim:rgba(21, 24, 28, 0.4);--raw-scrollbar-thumb:#7A808A;--raw-scrollbar-thumb-hov:#6E747E;--raw-skeleton-bg:#e9ecef;--raw-skeleton-shimmer:rgba(255, 255, 255, 0.72);--raw-success:#2f6b3a;--raw-success-bg:#eaf2e6;--raw-surface:#ffffff;--raw-surface-raised:#ffffff;--raw-surface-sunken:#f1f3f5;--raw-switch-on:#1b4d8f;--raw-text-on-accent:#ffffff;--raw-text-on-solid:#ffffff;--raw-text-primary:#15181c;--raw-text-secondary:#4f555e;--raw-text-tertiary:#606770;--raw-tooltip-bg:#15181c;--raw-tooltip-border:#15181c;--raw-tooltip-fg:#f6f7f8;--raw-warning:#8a5a00;--raw-warning-bg:#fbf1dd;--accent:var(--raw-accent);--accent-hover:var(--raw-accent-hover);--accent-soft:var(--raw-accent-soft);--border-control:var(--raw-border-control);--border-decor:var(--raw-border-decor);--border-decor-str:var(--raw-border-decor-str);--danger:var(--raw-danger);--danger-bg:var(--raw-danger-bg);--danger-hover:var(--raw-danger-hover);--info:var(--raw-info);--info-bg:var(--raw-info-bg);--paper:var(--raw-paper);--scrim:var(--raw-scrim);--scrollbar-thumb:var(--raw-scrollbar-thumb);--scrollbar-thumb-hov:var(--raw-scrollbar-thumb-hov);--skeleton-bg:var(--raw-skeleton-bg);--skeleton-shimmer:var(--raw-skeleton-shimmer);--success:var(--raw-success);--success-bg:var(--raw-success-bg);--surface:var(--raw-surface);--surface-raised:var(--raw-surface-raised);--surface-sunken:var(--raw-surface-sunken);--switch-on:var(--raw-switch-on);--text-on-accent:var(--raw-text-on-accent);--text-on-solid:var(--raw-text-on-solid);--text-primary:var(--raw-text-primary);--text-secondary:var(--raw-text-secondary);--text-tertiary:var(--raw-text-tertiary);--tooltip-bg:var(--raw-tooltip-bg);--tooltip-border:var(--raw-tooltip-border);--tooltip-fg:var(--raw-tooltip-fg);--warning:var(--raw-warning);--warning-bg:var(--raw-warning-bg);}:root[data-theme="dark"], [data-theme="dark"] {--raw-accent:#7AA9DE;--raw-accent-hover:#8FB8E6;--raw-accent-soft:#1C2C3D;--raw-border-control:#8A9099;--raw-border-decor:#2A3038;--raw-border-decor-str:#3A424C;--raw-danger:#E07A6E;--raw-danger-bg:#341D1A;--raw-danger-hover:#F09A90;--raw-info:#5B9BC4;--raw-info-bg:#13242F;--raw-paper:#14171A;--raw-scrim:rgba(0, 0, 0, 0.62);--raw-scrollbar-thumb:#6E747E;--raw-scrollbar-thumb-hov:#7D828A;--raw-skeleton-bg:#2E343C;--raw-skeleton-shimmer:rgba(255, 255, 255, 0.06);--raw-success:#6FAA7A;--raw-success-bg:#16241A;--raw-surface:#1C2024;--raw-surface-raised:#232830;--raw-surface-sunken:#1A1D21;--raw-switch-on:#3E6EA8;--raw-text-on-accent:#0D1114;--raw-text-on-solid:#0D1114;--raw-text-primary:#E4E7EA;--raw-text-secondary:#AEB6C0;--raw-text-tertiary:#9BA3AD;--raw-tooltip-bg:#232830;--raw-tooltip-border:#2A3038;--raw-tooltip-fg:#E4E7EA;--raw-warning:#C99A3F;--raw-warning-bg:#242A31;--accent:var(--raw-accent);--accent-hover:var(--raw-accent-hover);--accent-soft:var(--raw-accent-soft);--border-control:var(--raw-border-control);--border-decor:var(--raw-border-decor);--border-decor-str:var(--raw-border-decor-str);--danger:var(--raw-danger);--danger-bg:var(--raw-danger-bg);--danger-hover:var(--raw-danger-hover);--info:var(--raw-info);--info-bg:var(--raw-info-bg);--paper:var(--raw-paper);--scrim:var(--raw-scrim);--scrollbar-thumb:var(--raw-scrollbar-thumb);--scrollbar-thumb-hov:var(--raw-scrollbar-thumb-hov);--skeleton-bg:var(--raw-skeleton-bg);--skeleton-shimmer:var(--raw-skeleton-shimmer);--success:var(--raw-success);--success-bg:var(--raw-success-bg);--surface:var(--raw-surface);--surface-raised:var(--raw-surface-raised);--surface-sunken:var(--raw-surface-sunken);--switch-on:var(--raw-switch-on);--text-on-accent:var(--raw-text-on-accent);--text-on-solid:var(--raw-text-on-solid);--text-primary:var(--raw-text-primary);--text-secondary:var(--raw-text-secondary);--text-tertiary:var(--raw-text-tertiary);--tooltip-bg:var(--raw-tooltip-bg);--tooltip-border:var(--raw-tooltip-border);--tooltip-fg:var(--raw-tooltip-fg);--warning:var(--raw-warning);--warning-bg:var(--raw-warning-bg);}:root {--sans:-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', 'Source Han Sans SC', 'Noto Sans CJK SC', 'Geeza Pro', 'Segoe UI Historic', sans-serif;--mono:ui-monospace, 'SF Mono', 'Cascadia Mono', 'Segoe UI Mono', 'Roboto Mono', Menlo, Consolas, 'Sarasa Mono SC', 'Microsoft YaHei Mono', monospace;--serif:'Iowan Old Style', 'Palatino Linotype', Palatino, Georgia, 'Songti SC', 'SimSun', 'Noto Serif CJK SC', 'Source Han Serif SC', serif;--tracking-normal:0;}:root:lang(ar), :root:lang(fa), :root:lang(he), :root:lang(ur) {--tracking-normal:0.01em;}a, button, label, summary, input[type="checkbox"], input[type="radio"], input[type="button"], input[type="submit"], [role="button"], [role="switch"], [role="tab"], [role="option"], .choice, .switch, .btn, .accordion__trigger, .tabs__tab, .card, .list__row {-webkit-tap-highlight-color:transparent;}.choice:active, .switch:active, .btn:active, .list__row:active, .card:active {opacity:0.82;}@media (hover:hover) and (pointer:fine) {.choice:active, .switch:active, .btn:active, .list__row:active, .card:active {opacity:1;}}
|
|
1
|
+
:root {--raw-paper:#f6f7f8;--raw-surface:#ffffff;--raw-surface-sunken:#f1f3f5;--raw-surface-raised:#ffffff;--raw-scrollbar-thumb:#7A808A;--raw-scrollbar-thumb-hov:#6E747E;--raw-text-primary:#15181c;--raw-text-secondary:#4f555e;--raw-text-tertiary:#606770;--raw-text-on-accent:#ffffff;--raw-text-on-solid:#ffffff;--raw-skeleton-bg:#e9ecef;--raw-skeleton-shimmer:rgba(255, 255, 255, 0.72);--raw-border-control:#868b94;--raw-border-decor:#e2e5e9;--raw-border-decor-str:#c8cdd4;--raw-danger:#c0392b;--raw-danger-hover:#8f1e17;--raw-scrim:rgba(21, 24, 28, 0.4);--raw-success:#2f6b3a;--raw-warning:#8a5a00;--raw-info:#1d5f8a;--raw-danger-bg:#fdeeec;--raw-success-bg:#eaf2e6;--raw-warning-bg:#fbf1dd;--raw-info-bg:#e8f1f8;--raw-dir-up:#c0392b;--raw-dir-down:#2f6b3a;--raw-accent:#1b4d8f;--raw-switch-on:#1b4d8f;--raw-accent-hover:#163a6d;--raw-accent-soft:#e6eef7;--raw-tooltip-bg:#15181c;--raw-tooltip-fg:#f6f7f8;--raw-tooltip-border:#15181c;--paper:var(--raw-paper);--surface:var(--raw-surface);--surface-sunken:var(--raw-surface-sunken);--surface-raised:var(--raw-surface-raised);--scrollbar-size:10px;--scrollbar-size-thin:6px;--scrollbar-thumb:var(--raw-scrollbar-thumb);--scrollbar-thumb-hov:var(--raw-scrollbar-thumb-hov);--scrollbar-radius:5px;--text-primary:var(--raw-text-primary);--text-secondary:var(--raw-text-secondary);--text-tertiary:var(--raw-text-tertiary);--text-on-accent:var(--raw-text-on-accent);--text-on-solid:var(--raw-text-on-solid);--skeleton-bg:var(--raw-skeleton-bg);--skeleton-shimmer:var(--raw-skeleton-shimmer);--skeleton-h:1em;--skeleton-size:40px;--skeleton-duration:1.4s;--ease-out:cubic-bezier(0.23, 1, 0.32, 1);--progress-h:6px;--progress-dur:240ms;--r-full:999px;--ring-size:64px;--ring-thickness:8px;--progress:0%;--progress-num:0;--z-popover:60;--popover-min-w:200px;--popover-max-w:320px;--popover-p:var(--sp-3);--popover-gap:8px;--popover-dur:140ms;--border-control:var(--raw-border-control);--border-decor:var(--raw-border-decor);--border-decor-str:var(--raw-border-decor-str);--danger:var(--raw-danger);--danger-hover:var(--raw-danger-hover);--scrim:var(--raw-scrim);--success:var(--raw-success);--warning:var(--raw-warning);--info:var(--raw-info);--danger-bg:var(--raw-danger-bg);--success-bg:var(--raw-success-bg);--warning-bg:var(--raw-warning-bg);--info-bg:var(--raw-info-bg);--dir-up:var(--raw-dir-up);--dir-down:var(--raw-dir-down);--accent:var(--raw-accent);--switch-on:var(--raw-switch-on);--accent-hover:var(--raw-accent-hover);--accent-soft:var(--raw-accent-soft);--tooltip-bg:var(--raw-tooltip-bg);--tooltip-fg:var(--raw-tooltip-fg);--tooltip-border:var(--raw-tooltip-border);--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:clamp(1rem, 0.95rem + 0.3vw, 1.25rem);--sp-5:clamp(1.25rem, 1.15rem + 0.7vw, 1.75rem);--sp-6:clamp(1.5rem, 1.3rem + 1.2vw, 2.25rem);--sp-7:clamp(2rem, 1.7rem + 1.8vw, 3.5rem);--sp-8:clamp(2.5rem, 2.1rem + 2.4vw, 4.5rem);--bp-sm:30rem;--bp-md:48rem;--bp-lg:64rem;--bp-xl:80rem;--fs-xs:0.75rem;--fs-sm:0.875rem;--fs-base:clamp(1rem, 0.95rem + 0.3vw, 1.125rem);--fs-md:clamp(1.125rem, 1.05rem + 0.5vw, 1.3125rem);--fs-lg:clamp(1.3125rem, 1.2rem + 0.7vw, 1.5rem);--fs-xl:clamp(1.5rem, 1.3rem + 1.2vw, 1.875rem);--fs-2xl:clamp(1.75rem, 1.45rem + 1.8vw, 2.5rem);--lh-tight:1.25;--lh-base:1.7;--lh-loose:1.85;--measure-page:52rem;--tracking-title:-0.02em;--r-sm:6px;--r-xs:3px;--r-md:10px;--r-lg:14px;--r-pill:999px;--shadow-1:0 1px 2px rgba(31, 29, 25, 0.05), 0 1px 3px rgba(31, 29, 25, 0.06);--shadow-2:0 2px 4px rgba(31, 29, 25, 0.05), 0 6px 16px rgba(31, 29, 25, 0.08);--dur-fast:120ms;--dur-base:180ms;--dur-slow:280ms;--ease-out:cubic-bezier(0.23, 1, 0.32, 1);--ease-in-out:cubic-bezier(0.77, 0, 0.175, 1);--ease-drawer:cubic-bezier(0.32, 0.72, 0, 1);--lift-sm:1px;--lift-md:2px;--lift-lg:8px;--z-base:0;--z-sticky:10;--z-header:20;--z-raised:5;--z-overlay:30;--z-modal:40;--z-toast:50;--sz-touch:44px;--sz-touch-sm:32px;}@media (prefers-reduced-motion:reduce) {*, *::before, *::after {animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;scroll-behavior:auto !important;}}:focus-visible {outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--r-sm);}:root {--measure-prose:34em;--measure-title:20em;--measure-lede:32em;--measure-pull:30em;--measure-aside:32em;}:root:lang(en), :root:lang(en-US), :root:lang(en-GB), :root:lang(fr), :root:lang(de), :root:lang(es), :root:lang(pt), :root:lang(ru), :root:lang(el), :root:lang(tr), :root:lang(vi) {--measure-prose:68ch;--measure-title:34ch;--measure-lede:62ch;--measure-pull:58ch;--measure-aside:56ch;}:root:lang(ar) {--measure-prose:60ch;--measure-title:30ch;--measure-lede:56ch;--measure-pull:52ch;--measure-aside:50ch;}:root:lang(hi), :root:lang(th), :root:lang(km), :root:lang(my) {--measure-prose:56ch;--measure-title:28ch;--measure-lede:52ch;--measure-pull:48ch;--measure-aside:46ch;}:root:lang(zh), :root:lang(zh-CN), :root:lang(zh-TW), :root:lang(ja), :root:lang(ko) {--measure-prose:34em;--measure-title:20em;--measure-lede:32em;--measure-pull:30em;--measure-aside:32em;}@media (prefers-color-scheme:dark) {:root:not([data-theme="light"]) {--raw-paper:#14171A;--raw-surface:#1C2024;--raw-surface-raised:#232830;--raw-surface-sunken:#1A1D21;--raw-scrollbar-thumb:#6E747E;--raw-scrollbar-thumb-hov:#7D828A;--raw-border-decor:#2A3038;--raw-border-decor-str:#3A424C;--raw-border-control:#8A9099;--raw-text-primary:#E4E7EA;--raw-text-secondary:#AEB6C0;--raw-text-tertiary:#9BA3AD;--raw-text-on-accent:#0D1114;--raw-text-on-solid:#0D1114;--raw-skeleton-bg:#2E343C;--raw-skeleton-shimmer:rgba(255, 255, 255, 0.06);--raw-danger:#E07A6E;--raw-danger-hover:#F09A90;--raw-danger-bg:#341D1A;--raw-success:#6FAA7A;--raw-success-bg:#16241A;--raw-dir-up:#E07A6E;--raw-dir-down:#6FAA7A;--raw-warning:#C99A3F;--raw-warning-bg:#242A31;--raw-info:#5B9BC4;--raw-info-bg:#13242F;--raw-accent:#7AA9DE;--raw-switch-on:#3E6EA8;--raw-accent-hover:#8FB8E6;--raw-accent-soft:#1C2C3D;--raw-tooltip-bg:#232830;--raw-tooltip-fg:#E4E7EA;--raw-tooltip-border:#2A3038;--raw-scrim:rgba(0, 0, 0, 0.62);}}[data-theme="light"] {--raw-accent:#1b4d8f;--raw-accent-hover:#163a6d;--raw-accent-soft:#e6eef7;--raw-border-control:#868b94;--raw-border-decor:#e2e5e9;--raw-border-decor-str:#c8cdd4;--raw-danger:#c0392b;--raw-danger-bg:#fdeeec;--raw-danger-hover:#8f1e17;--raw-dir-down:#2f6b3a;--raw-dir-up:#c0392b;--raw-info:#1d5f8a;--raw-info-bg:#e8f1f8;--raw-paper:#f6f7f8;--raw-scrim:rgba(21, 24, 28, 0.4);--raw-scrollbar-thumb:#7A808A;--raw-scrollbar-thumb-hov:#6E747E;--raw-skeleton-bg:#e9ecef;--raw-skeleton-shimmer:rgba(255, 255, 255, 0.72);--raw-success:#2f6b3a;--raw-success-bg:#eaf2e6;--raw-surface:#ffffff;--raw-surface-raised:#ffffff;--raw-surface-sunken:#f1f3f5;--raw-switch-on:#1b4d8f;--raw-text-on-accent:#ffffff;--raw-text-on-solid:#ffffff;--raw-text-primary:#15181c;--raw-text-secondary:#4f555e;--raw-text-tertiary:#606770;--raw-tooltip-bg:#15181c;--raw-tooltip-border:#15181c;--raw-tooltip-fg:#f6f7f8;--raw-warning:#8a5a00;--raw-warning-bg:#fbf1dd;--accent:var(--raw-accent);--accent-hover:var(--raw-accent-hover);--accent-soft:var(--raw-accent-soft);--border-control:var(--raw-border-control);--border-decor:var(--raw-border-decor);--border-decor-str:var(--raw-border-decor-str);--danger:var(--raw-danger);--danger-bg:var(--raw-danger-bg);--danger-hover:var(--raw-danger-hover);--dir-down:var(--raw-dir-down);--dir-up:var(--raw-dir-up);--info:var(--raw-info);--info-bg:var(--raw-info-bg);--paper:var(--raw-paper);--scrim:var(--raw-scrim);--scrollbar-thumb:var(--raw-scrollbar-thumb);--scrollbar-thumb-hov:var(--raw-scrollbar-thumb-hov);--skeleton-bg:var(--raw-skeleton-bg);--skeleton-shimmer:var(--raw-skeleton-shimmer);--success:var(--raw-success);--success-bg:var(--raw-success-bg);--surface:var(--raw-surface);--surface-raised:var(--raw-surface-raised);--surface-sunken:var(--raw-surface-sunken);--switch-on:var(--raw-switch-on);--text-on-accent:var(--raw-text-on-accent);--text-on-solid:var(--raw-text-on-solid);--text-primary:var(--raw-text-primary);--text-secondary:var(--raw-text-secondary);--text-tertiary:var(--raw-text-tertiary);--tooltip-bg:var(--raw-tooltip-bg);--tooltip-border:var(--raw-tooltip-border);--tooltip-fg:var(--raw-tooltip-fg);--warning:var(--raw-warning);--warning-bg:var(--raw-warning-bg);}:root[data-theme="dark"], [data-theme="dark"] {--raw-accent:#7AA9DE;--raw-accent-hover:#8FB8E6;--raw-accent-soft:#1C2C3D;--raw-border-control:#8A9099;--raw-border-decor:#2A3038;--raw-border-decor-str:#3A424C;--raw-danger:#E07A6E;--raw-danger-bg:#341D1A;--raw-danger-hover:#F09A90;--raw-dir-down:#6FAA7A;--raw-dir-up:#E07A6E;--raw-info:#5B9BC4;--raw-info-bg:#13242F;--raw-paper:#14171A;--raw-scrim:rgba(0, 0, 0, 0.62);--raw-scrollbar-thumb:#6E747E;--raw-scrollbar-thumb-hov:#7D828A;--raw-skeleton-bg:#2E343C;--raw-skeleton-shimmer:rgba(255, 255, 255, 0.06);--raw-success:#6FAA7A;--raw-success-bg:#16241A;--raw-surface:#1C2024;--raw-surface-raised:#232830;--raw-surface-sunken:#1A1D21;--raw-switch-on:#3E6EA8;--raw-text-on-accent:#0D1114;--raw-text-on-solid:#0D1114;--raw-text-primary:#E4E7EA;--raw-text-secondary:#AEB6C0;--raw-text-tertiary:#9BA3AD;--raw-tooltip-bg:#232830;--raw-tooltip-border:#2A3038;--raw-tooltip-fg:#E4E7EA;--raw-warning:#C99A3F;--raw-warning-bg:#242A31;--accent:var(--raw-accent);--accent-hover:var(--raw-accent-hover);--accent-soft:var(--raw-accent-soft);--border-control:var(--raw-border-control);--border-decor:var(--raw-border-decor);--border-decor-str:var(--raw-border-decor-str);--danger:var(--raw-danger);--danger-bg:var(--raw-danger-bg);--danger-hover:var(--raw-danger-hover);--dir-down:var(--raw-dir-down);--dir-up:var(--raw-dir-up);--info:var(--raw-info);--info-bg:var(--raw-info-bg);--paper:var(--raw-paper);--scrim:var(--raw-scrim);--scrollbar-thumb:var(--raw-scrollbar-thumb);--scrollbar-thumb-hov:var(--raw-scrollbar-thumb-hov);--skeleton-bg:var(--raw-skeleton-bg);--skeleton-shimmer:var(--raw-skeleton-shimmer);--success:var(--raw-success);--success-bg:var(--raw-success-bg);--surface:var(--raw-surface);--surface-raised:var(--raw-surface-raised);--surface-sunken:var(--raw-surface-sunken);--switch-on:var(--raw-switch-on);--text-on-accent:var(--raw-text-on-accent);--text-on-solid:var(--raw-text-on-solid);--text-primary:var(--raw-text-primary);--text-secondary:var(--raw-text-secondary);--text-tertiary:var(--raw-text-tertiary);--tooltip-bg:var(--raw-tooltip-bg);--tooltip-border:var(--raw-tooltip-border);--tooltip-fg:var(--raw-tooltip-fg);--warning:var(--raw-warning);--warning-bg:var(--raw-warning-bg);}:root {--sans:-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', 'Source Han Sans SC', 'Noto Sans CJK SC', 'Geeza Pro', 'Segoe UI Historic', sans-serif;--mono:ui-monospace, 'SF Mono', 'Cascadia Mono', 'Segoe UI Mono', 'Roboto Mono', Menlo, Consolas, 'Sarasa Mono SC', 'Microsoft YaHei Mono', monospace;--serif:'Iowan Old Style', 'Palatino Linotype', Palatino, Georgia, 'Songti SC', 'SimSun', 'Noto Serif CJK SC', 'Source Han Serif SC', serif;--tracking-normal:0;}:root:lang(ar), :root:lang(fa), :root:lang(he), :root:lang(ur) {--tracking-normal:0.01em;}a, button, label, summary, input[type="checkbox"], input[type="radio"], input[type="button"], input[type="submit"], [role="button"], [role="switch"], [role="tab"], [role="option"], .choice, .switch, .btn, .accordion__trigger, .tabs__tab, .card, .list__row {-webkit-tap-highlight-color:transparent;}.choice:active, .switch:active, .btn:active, .list__row:active, .card:active {opacity:0.82;}@media (hover:hover) and (pointer:fine) {.choice:active, .switch:active, .btn:active, .list__row:active, .card:active {opacity:1;}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.delta {display:inline-flex;align-items:baseline;gap:0.15em;font-family:var(--mono);white-space:nowrap;font-weight:500;line-height:1.4;}.delta::before {font-weight:400;font-size:0.95em;}.delta--up {color:var(--dir-up);}.delta--up::before {content:"+";}.delta--down {color:var(--dir-down);}.delta--down::before {content:"\2212";}.delta--flat {color:var(--text-secondary);}.delta--flat::before {content:none;}.delta--arrow.delta--up::before {content:"\25B2";font-size:0.8em;}.delta--arrow.delta--down::before {content:"\25BC";font-size:0.8em;}.delta--sm {font-size:var(--fs-xs);font-weight:400;}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.metric {display:flex;flex-direction:column;gap:var(--sp-1);margin:0;min-width:0;}.metric > dd {margin-inline-start:0;}.metric__label {margin:0;font-size:var(--fs-xs);font-weight:500;line-height:1.5;color:var(--text-secondary);letter-spacing:var(--tracking-normal);}.metric__value {margin:0;font-family:var(--mono);font-size:var(--fs-xl);font-weight:600;line-height:var(--lh-tight);color:var(--text-primary);white-space:normal;overflow-wrap:anywhere;display:flex;flex-wrap:wrap;align-items:baseline;}.metric__unit {margin-inline-start:0.3em;font-size:var(--fs-sm);font-weight:400;color:var(--text-secondary);white-space:normal;overflow-wrap:anywhere;min-width:0;}.metric__foot {margin:0;display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--sp-2);font-size:var(--fs-xs);line-height:1.5;color:var(--text-tertiary);}.metric__note {color:var(--text-tertiary);}.metric__spark {margin-block-start:var(--sp-1);color:var(--text-tertiary);}.metric--null .metric__value {color:var(--text-tertiary);font-weight:400;}.metric--lg .metric__value {font-size:var(--fs-2xl);}.metric--sm .metric__value {font-size:var(--fs-md);font-weight:500;}.metric-grid {display:grid;grid-template-columns:repeat(auto-fit, minmax(min(100%, 12rem), 1fr));gap:var(--sp-5) var(--sp-5);margin:0;padding:0;list-style:none;}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(function () {
|
|
1
|
+
(function (global) {
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
4
|
var uid = 0;
|
|
@@ -28,7 +28,8 @@ return ev;
|
|
|
28
28
|
|
|
29
29
|
function toArray(x) { return Array.prototype.slice.call(x); }
|
|
30
30
|
|
|
31
|
-
var raf = (typeof window
|
|
31
|
+
var raf = (typeof window !== 'undefined' &&
|
|
32
|
+
typeof window.requestAnimationFrame === 'function')
|
|
32
33
|
? window.requestAnimationFrame.bind(window)
|
|
33
34
|
: function (fn) { return setTimeout(fn, 16); };
|
|
34
35
|
|
|
@@ -51,6 +52,8 @@ return null;
|
|
|
51
52
|
}
|
|
52
53
|
|
|
53
54
|
function Accordion(root, opts) {
|
|
55
|
+
|
|
56
|
+
if (root && root.accordionInstance) return root.accordionInstance;
|
|
54
57
|
this.root = root;
|
|
55
58
|
this.opts = opts || {};
|
|
56
59
|
this.items = toArray(root.querySelectorAll('.accordion__item'));
|
|
@@ -202,18 +205,21 @@ if (item) self.toggle(item);
|
|
|
202
205
|
|
|
203
206
|
};
|
|
204
207
|
|
|
205
|
-
|
|
208
|
+
global.Accordion = Accordion;
|
|
206
209
|
|
|
207
210
|
function init() {
|
|
208
211
|
var nodes = document.querySelectorAll('[data-accordion]');
|
|
209
212
|
for (var i = 0; i < nodes.length; i++) {
|
|
213
|
+
|
|
214
|
+
if (nodes[i].accordionInstance) continue;
|
|
210
215
|
nodes[i].accordionInstance = new Accordion(nodes[i]);
|
|
211
216
|
}
|
|
212
217
|
}
|
|
213
218
|
|
|
219
|
+
if (typeof document === 'undefined') return;
|
|
214
220
|
if (document.readyState === 'loading') {
|
|
215
221
|
document.addEventListener('DOMContentLoaded', init);
|
|
216
222
|
} else {
|
|
217
223
|
init();
|
|
218
224
|
}
|
|
219
|
-
})();
|
|
225
|
+
})(typeof window !== 'undefined' ? window : globalThis);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(function () {
|
|
1
|
+
(function (global) {
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
4
|
var flEmit = function (el, name, detail) {
|
|
@@ -306,7 +306,7 @@ root.navInstance = new Nav(root, opts);
|
|
|
306
306
|
return root.navInstance;
|
|
307
307
|
};
|
|
308
308
|
|
|
309
|
-
|
|
309
|
+
global.Nav = Nav;
|
|
310
310
|
|
|
311
311
|
function init() {
|
|
312
312
|
each(document.querySelectorAll('[data-nav]'), function (el) {
|
|
@@ -314,9 +314,10 @@ if (!el.navInstance) Nav.attach(el, {});
|
|
|
314
314
|
});
|
|
315
315
|
}
|
|
316
316
|
|
|
317
|
+
if (typeof document === 'undefined') return;
|
|
317
318
|
if (document.readyState === 'loading') {
|
|
318
319
|
document.addEventListener('DOMContentLoaded', init);
|
|
319
320
|
} else {
|
|
320
321
|
init();
|
|
321
322
|
}
|
|
322
|
-
})();
|
|
323
|
+
})(typeof window !== 'undefined' ? window : globalThis);
|