base-paint 0.3.1 → 0.3.3

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 (62) hide show
  1. package/README.md +94 -1
  2. package/dist/blocks.d.ts +160 -6
  3. package/dist/blocks.d.ts.map +1 -1
  4. package/dist/blocks.js +1212 -27
  5. package/dist/blocks.js.map +1 -1
  6. package/dist/charts.d.ts +6 -4
  7. package/dist/charts.d.ts.map +1 -1
  8. package/dist/charts.js +426 -67
  9. package/dist/charts.js.map +1 -1
  10. package/dist/controls.d.ts +20 -5
  11. package/dist/controls.d.ts.map +1 -1
  12. package/dist/controls.js +242 -34
  13. package/dist/controls.js.map +1 -1
  14. package/dist/font.d.ts +3 -3
  15. package/dist/font.js +3 -3
  16. package/dist/help.d.ts +3 -3
  17. package/dist/help.d.ts.map +1 -1
  18. package/dist/help.js +32 -15
  19. package/dist/help.js.map +1 -1
  20. package/dist/helpShell.d.ts.map +1 -1
  21. package/dist/helpShell.js +2 -2
  22. package/dist/helpShell.js.map +1 -1
  23. package/dist/index.d.ts +10 -2
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +8 -2
  26. package/dist/index.js.map +1 -1
  27. package/dist/injector.d.ts +1 -1
  28. package/dist/output/saveHtml.d.ts +37 -2
  29. package/dist/output/saveHtml.d.ts.map +1 -1
  30. package/dist/output/saveHtml.js +125 -15
  31. package/dist/output/saveHtml.js.map +1 -1
  32. package/dist/pageShapes.d.ts +117 -0
  33. package/dist/pageShapes.d.ts.map +1 -0
  34. package/dist/pageShapes.js +366 -0
  35. package/dist/pageShapes.js.map +1 -0
  36. package/dist/pageUi.d.ts +37 -0
  37. package/dist/pageUi.d.ts.map +1 -0
  38. package/dist/pageUi.js +237 -0
  39. package/dist/pageUi.js.map +1 -0
  40. package/dist/spec/charts.d.ts +16 -3
  41. package/dist/spec/charts.d.ts.map +1 -1
  42. package/dist/spec/charts.js +1 -1
  43. package/dist/spec/charts.js.map +1 -1
  44. package/dist/spec/controls.d.ts +30 -5
  45. package/dist/spec/controls.d.ts.map +1 -1
  46. package/dist/spec/controls.js +16 -3
  47. package/dist/spec/controls.js.map +1 -1
  48. package/dist/spec/help.d.ts +34 -6
  49. package/dist/spec/help.d.ts.map +1 -1
  50. package/dist/spec/help.js +21 -4
  51. package/dist/spec/help.js.map +1 -1
  52. package/dist/spec/index.d.ts +6 -3
  53. package/dist/spec/index.d.ts.map +1 -1
  54. package/dist/spec/index.js +27 -2
  55. package/dist/spec/index.js.map +1 -1
  56. package/dist/style.d.ts.map +1 -1
  57. package/dist/style.js +279 -47
  58. package/dist/style.js.map +1 -1
  59. package/dist/text.d.ts.map +1 -1
  60. package/dist/text.js +7 -2
  61. package/dist/text.js.map +1 -1
  62. package/package.json +1 -1
package/dist/pageUi.js ADDED
@@ -0,0 +1,237 @@
1
+ /** #525 · 页面级移动端配方(共用件):把 HELP 页当刻的手机端能力搬进「结果型/过程型/回执」
2
+ * 三类页面共走的那条链,一次到位,四张下游票照抄而不必各写一遍。
3
+ *
4
+ * 谁在用(写得出哪两个在用):**卡路里**的整页装配 `src/shared/docPage.ts` 的 `pageUi` 可选位
5
+ * (`skill-calorie/src/shared/docPage.ts` 传 `pageUi: true` 时把本函数拼进 `sharedCssText`);
6
+ * **样板页** `.scratch/t525/` 的 `查身材照` 目标形态(票 #525 的照抄对象)。
7
+ *
8
+ * 为什么另立一件而不写进 `blocks.ts`:`blocks.ts` 是 12 个区块样式区的唯一定义地,本件是
9
+ * **页面级**配方(断点/触摸区/安全区/窄屏表格行为),与 12 区无组合关系——与同仓先例
10
+ * `block-toc`(页内导航)、`block-caliber`(口径行)、`block-conclusion`(结论条)落
11
+ * `pageShell` 区同一类东西,只是体量更大,故另立文件。(#525 开工当刻 `blocks.ts` 有第二个
12
+ * 写窗在途,见 `docs/skills/skill-calorie/t525-证据.md` 的并发记账。)
13
+ *
14
+ * 口径(票面「手机端基准=HELP 页当刻的能力,不是新设计」)逐条:
15
+ * · 断点只用仓内既有值 **820/640/400**(`blocks.ts` 的 640、`TOAST_DEFAULTS.mobileMaxPx`
16
+ * 的 820、`style.ts` 的 400),**不新造断点值**;
17
+ * · 触摸区 ≥44×44px(HELP `.ilife-copy-btn` 820 档 `min-height:44px` 同值);
18
+ * · `env(safe-area-inset-*)`(HELP toast 与回顶按钮同法;须配 `viewport-fit=cover`);
19
+ * · 页脚留白 60px(HELP `.ilife-help-shell` 640 档 `padding: 20px 16px 60px` 逐值同);
20
+ * · 读数卡窄屏两格 → 400 档单列(HELP `.ilife-help-shell-grid` 640 档单列的同一条意图);
21
+ * · 页内定位:带 `id` 的区块吃 `scroll-margin-top`,锚点跳转不把标题顶到视口外。
22
+ *
23
+ * **全部规则都挂在根类 `.ilife-page-ui` 之下**:没启用本配方的页面一条都命中不到
24
+ * (产出物逐字节不变,登录门读数见证据件)。
25
+ */
26
+ /** 起点色值口径:与 `blocks.ts` 同一条冻结 token 表;本件不新增 token、不新增色值。 */
27
+ const LF = String.fromCharCode(10);
28
+ /** 页面级配方的根类名:整页装配把这一颗类加到版面根上(`docPage.ts` 的 `pageUi` 位)。 */
29
+ export const PAGE_UI_CLASS = 'ilife-page-ui';
30
+ /** 配 `viewport-fit=cover` 的 viewport 串(`env(safe-area-inset-*)` 在 iOS 上不写它恒取 0)。
31
+ * 只在启用本配方时用它替换旧串;不给即老串(旧调用方逐字节不变)。 */
32
+ export const PAGE_UI_VIEWPORT = 'width=device-width,initial-scale=1,viewport-fit=cover';
33
+ /** 页面级移动端配方的样式资产唯一产出者。恒返回非空 CSS 文本。 */
34
+ export function pageUiCss(input) {
35
+ const p = input !== undefined && input !== null
36
+ && typeof input.prefix === 'string' && input.prefix !== '' ? input.prefix : 'ilife-';
37
+ const root = '.' + p + 'page-ui';
38
+ return [
39
+ '/* #525 页面级移动端配方 · 只对根类 ' + root + ' 的页面生效 */',
40
+ '/* ① 图片与矢量图兜底:任何一张图都不许撑破容器(结果型页面的第一类溢出源)。 */',
41
+ root + ' img,',
42
+ root + ' svg {',
43
+ ' max-width: 100%;',
44
+ '}',
45
+ root + ' img {',
46
+ ' height: auto;',
47
+ '}',
48
+ '/* ② 复制区债之一(**置灰规则的定义地已上移到 `style.ts` 的 `copyButton` 区**——',
49
+ ' 它对所有页面都成立,不属「移动端配方」,故本件不再重述第二条:同一件事只留一个定义地)。',
50
+ ' 本件只在窄屏把命中高度补齐;宽度档的 44px 由 `ACTION_BAR_DEFAULTS.minHeightPx` 统一给。 */',
51
+ '/* ③ 页内定位:带 id 的区块被锚点跳转命中时,标题与视口顶留 20px(不贴着边缘)。 */',
52
+ root + ' .' + p + 'block-page-shell-body > *[id] {',
53
+ ' scroll-margin-top: 20px;',
54
+ '}',
55
+ '/* ④ 表格:列数极多的表仍可横滑时的兜底(细滚动条+触屏惯性)。 */',
56
+ root + ' .' + p + 'block-data-table {',
57
+ ' -webkit-overflow-scrolling: touch;',
58
+ ' scrollbar-width: thin;',
59
+ '}',
60
+ '/* ⑤ 触摸区:**全宽档**所有页内可点元素命中区 ≥44×44px。',
61
+ ' #525 收口:这一条原来只在 ≤820 那条媒体查询里,实测 1440 档样板页的页内导航(`a`)',
62
+ ' 只有 27px 高 —— 44px 是**全宽档**口径(与 `.ilife-copy-btn` 同值),故移出媒体查询。',
63
+ ' 只加 `min-height` 与最小内距,不动任何既有选择器的语义。 */',
64
+ root + ' .' + p + 'copy-btn,',
65
+ root + ' .' + p + 'copy-menu-item,',
66
+ root + ' .' + p + 'action-btn,',
67
+ root + ' .' + p + 'block-disclosure-summary,',
68
+ root + ' .' + p + 'block-param-form-input,',
69
+ root + ' .' + p + 'block-toc a {',
70
+ ' min-height: 44px;',
71
+ '}',
72
+ '/* 页内导航按胶囊排(inline 元素上 min-height 不生效,须转 inline-flex)。 */',
73
+ root + ' .' + p + 'block-toc a {',
74
+ ' display: inline-flex;',
75
+ ' align-items: center;',
76
+ ' padding-top: 0;',
77
+ ' padding-bottom: 0;',
78
+ '}',
79
+ '/* ⑥ 窄屏(≤640):安全区留白、字号节奏、读数卡栅格、页内导航横滑、表格卡片化。 */',
80
+ '@media (max-width: 640px) {',
81
+ ' /* 安全区:手机横放与「小白条」机型上正文不许贴边;页脚留 60px 与 HELP 640 档逐值同。 */',
82
+ ' ' + root + ' .' + p + 'block-page-shell {',
83
+ ' padding: 20px max(16px, env(safe-area-inset-right, 0px))',
84
+ ' calc(60px + env(safe-area-inset-bottom, 0px)) max(16px, env(safe-area-inset-left, 0px));',
85
+ ' }',
86
+ ' /* 字号下限:正文类文本一档不落(表格单元格/口径行/列表行/事实条标签 ≥12px)。 */',
87
+ ' ' + root + ' .' + p + 'block-caliber,',
88
+ ' ' + root + ' .' + p + 'block-list-rows-row,',
89
+ ' ' + root + ' .' + p + 'block-kpi-card-detail {',
90
+ ' font-size: 12px;',
91
+ ' }',
92
+ ' /* 读数卡:两格并排(150px 下限在 358px 可用宽里正好两格,不再被 auto-fit 挤成三格)。 */',
93
+ ' ' + root + ' .' + p + 'block-kpi-card-grid {',
94
+ ' grid-template-columns: repeat(2, minmax(0, 1fr));',
95
+ ' gap: 10px;',
96
+ ' }',
97
+ ' ' + root + ' .' + p + 'block-kpi-card {',
98
+ ' padding: 12px;',
99
+ ' }',
100
+ ' /* 页内导航:一条横滑的胶囊轨(换行会把标题挤出首屏;横滑不占纵向高度)。 */',
101
+ ' ' + root + ' .' + p + 'block-toc {',
102
+ ' flex-wrap: nowrap;',
103
+ ' overflow-x: auto;',
104
+ ' -webkit-overflow-scrolling: touch;',
105
+ ' scrollbar-width: none;',
106
+ ' padding-bottom: 2px;',
107
+ ' }',
108
+ ' ' + root + ' .' + p + 'block-toc a {',
109
+ ' flex: 0 0 auto;',
110
+ ' }',
111
+ ' /* 表格卡片化:每个数据格带列头文本(`td[data-label]`,由 `renderDataTable` 写入)时,',
112
+ ' 窄屏把「一行多列」摊成「一格两行:列头 + 值」,列头不再挤在 390px 里。',
113
+ ' 属性缺席时本段全部是空选择器 ⇒ 自动退回 #457 的紧凑表形态,不静默出错。 */',
114
+ ' ' + root + ' .' + p + 'block-data-table:has(td[' + 'data-label]) .' + p + 'block-data-table-table,',
115
+ ' ' + root + ' .' + p + 'block-data-table:has(td[' + 'data-label]) tbody,',
116
+ ' ' + root + ' .' + p + 'block-data-table:has(td[' + 'data-label]) tr,',
117
+ ' ' + root + ' .' + p + 'block-data-table:has(td[' + 'data-label]) td {',
118
+ ' display: block;',
119
+ ' width: auto;',
120
+ ' }',
121
+ ' ' + root + ' .' + p + 'block-data-table:has(td[' + 'data-label]) thead {',
122
+ ' display: none;',
123
+ ' }',
124
+ ' ' + root + ' .' + p + 'block-data-table:has(td[' + 'data-label]) tr {',
125
+ ' padding: 4px 0;',
126
+ ' border-top: 1px solid rgba(210, 210, 215, .6);',
127
+ ' }',
128
+ ' ' + root + ' .' + p + 'block-data-table:has(td[' + 'data-label]) tr:first-child {',
129
+ ' border-top: 0;',
130
+ ' }',
131
+ ' ' + root + ' .' + p + 'block-data-table:has(td[' + 'data-label]) td {',
132
+ ' display: flex;',
133
+ ' justify-content: space-between;',
134
+ ' gap: 12px;',
135
+ ' padding: 3px 10px;',
136
+ ' border-bottom: 0;',
137
+ ' text-align: left;',
138
+ ' }',
139
+ ' ' + root + ' .' + p + 'block-data-table:has(td[' + 'data-label]) td::before {',
140
+ ' content: attr(' + 'data-label);',
141
+ ' flex: 0 0 auto;',
142
+ ' color: var(--fg3);',
143
+ // #567 J4(§5.2 次级 12 吸收 12/11.5)。
144
+ ' font-size: 12px;',
145
+ ' font-weight: 600;',
146
+ ' }',
147
+ ' ' + root + ' .' + p + 'block-data-table:has(td[' + 'data-label]) td.' + p + 'block-data-table-cell-right {',
148
+ ' min-width: 0;',
149
+ ' }',
150
+ '}',
151
+ '/* ⑦ ≤400 档:读数卡塌单列(HELP `.ilife-help-shell-grid` 640 档单列的同一条意图,',
152
+ ' 在 400 档执行——本仓页面自有的 400 断点,不新造值)。 */',
153
+ '@media (max-width: 400px) {',
154
+ ' ' + root + ' .' + p + 'block-kpi-card-grid {',
155
+ ' grid-template-columns: minmax(0, 1fr);',
156
+ ' }',
157
+ '}',
158
+ '/* ⑧ 宽屏把可用宽用起来(#525 第二轮;来源=#525 席位版面档重判里**双方都认的那一条**',
159
+ ' 「1280 档没把宽屏用起来」,以及编排者 2026-09-15 的补记:页面模板 960 在 1280 档左右各空 140px)。',
160
+ ' 口径=「宽屏不空荡、正文不散」:页面模板从 `blocks.ts` 的 960(那儿是别票写集,本件不改它)',
161
+ ' 放宽到 **1280**,正文收成 **880px 一列**居中,栅格类与真二维数据(读数卡/表/图/键值行/',
162
+ ' 列表行)满铺可用宽。为什么用栅格而不是 12 条 `max-width`:正文类块在各票里长得不一样,',
163
+ ' 靠「不漏掉某个类名」的清单法必然漏(第一版注入候选就漏了无类名的 `section`),',
164
+ ' 栅格是**默认收窄、显式放宽**,漏不掉。',
165
+ ' `box-sizing: border-box` 是本条的前提:本仓没有 `*{box-sizing}` 全局复位(`blocks.ts` 的',
166
+ ' pageShell 区注明「不搬 HELP 那一条」),页面模板是 content-box ⇒ 不写它则 `max-width` 只管内容宽、',
167
+ ' 实占 1320(1440 档左右各空 60,不是 80)。 */',
168
+ '@media (min-width: 1001px) {',
169
+ ' ' + root + ' .' + p + 'block-page-shell {',
170
+ ' box-sizing: border-box;',
171
+ ' max-width: 1280px;',
172
+ ' }',
173
+ ' ' + root + ' .' + p + 'block-page-shell-body {',
174
+ ' display: grid;',
175
+ ' grid-template-columns: minmax(0, 1fr) 880px minmax(0, 1fr);',
176
+ ' }',
177
+ ' ' + root + ' .' + p + 'block-page-shell-body > * {',
178
+ ' grid-column: 2;',
179
+ ' }',
180
+ ' /* 宽的走满铺(`:where()` 保零权重,覆盖既有 `auto-fit` 时按「同权重、后出现」取胜) */',
181
+ ' ' + root + ' .' + p + 'block-page-shell-body > :where(',
182
+ ' .' + p + 'block-kpi-card-grid,',
183
+ ' .' + p + 'block-data-table,',
184
+ ' .' + p + 'block-chart-block,',
185
+ ' .' + p + 'block-detail-section,',
186
+ ' .' + p + 'block-list-rows',
187
+ ' ) {',
188
+ ' grid-column: 1 / -1;',
189
+ ' }',
190
+ ' /* 读数卡一行四张:960 档的 `auto-fit minmax(150px,1fr)` 只排得出 2 张,一行两张在宽屏上',
191
+ ' 就是「右半边空着」。四张同高靠既有 `grid-auto-rows: 1fr`(本件不动它)。 */',
192
+ ' ' + root + ' .' + p + 'block-kpi-card-grid {',
193
+ ' grid-template-columns: repeat(4, minmax(0, 1fr));',
194
+ ' }',
195
+ '}',
196
+ '/* ⑨ 状态字抬到与正文同档(#525 第二轮票面第 3 条:状态类文字在手机档偏小)。',
197
+ ' 390 档的徽章(`block-chip`)与读数卡说明(`block-kpi-card-detail`)都是 12px,与正文差 3px、',
198
+ ' 与读数卡标签 12px 齐平 ⇒ 「状态」看不出是另一类信息。抬到 **13px**:',
199
+ ' ① 不越过正文 15px(层级仍在,不靠加粗抢戏);② 高于 #524 基准 §3.2 的 390 档下限 12px 一档;',
200
+ ' ③ 与 HELP 侧 13px 那一档(`helpShell.ts` 常见档 13)逐值同。 */',
201
+ root + ' .' + p + 'block-chip,',
202
+ root + ' .' + p + 'block-kpi-card-detail {',
203
+ ' font-size: 13px;',
204
+ '}',
205
+ '/* ⑩ 提示块图标:`⚠️`/`✅` 这类**字形图标**在手机上小且糊(用户裁定第 5 条的同一类债)。',
206
+ ' 根类之下把它换成**带文字的图标位**:字形隐去,底盘保留(`kind` 的语义色仍在),',
207
+ ' 文字用 `font-size:0` 收起后由 `::after` 写一个可读的标签。',
208
+ ' 只改观感:`aria-hidden` 的那颗字形本来就不参与朗读,标签是替代它的可见文字。',
209
+ ' 选择器必须与 `blocks.ts` 640 档那条**同名同层**(`.block-feedback-block-note .…-icon`):',
210
+ ' 权重都是 3,本条在后 ⇒ 宽窄两档都盖得住(只用两颗类名会在 ≤640 档输给那条媒体查询)。 */',
211
+ root + ' .' + p + 'block-feedback-block-note .' + p + 'block-feedback-block-note-icon {',
212
+ ' width: auto;',
213
+ ' min-width: 44px;',
214
+ ' padding: 0 10px;',
215
+ ' border-radius: 999px;',
216
+ ' font-size: 0;',
217
+ ' font-weight: 600;',
218
+ '}',
219
+ root + ' .' + p + 'block-feedback-block-note .' + p + 'block-feedback-block-note-icon::after {',
220
+ ' font-size: 12px;',
221
+ ' line-height: 1;',
222
+ '}',
223
+ root + ' .' + p + 'block-feedback-block-note-icon-ok::after {',
224
+ ' content: "已完成";',
225
+ '}',
226
+ root + ' .' + p + 'block-feedback-block-note-icon-warn::after {',
227
+ ' content: "注意";',
228
+ '}',
229
+ root + ' .' + p + 'block-feedback-block-note-icon-danger::after {',
230
+ ' content: "未通过";',
231
+ '}',
232
+ root + ' .' + p + 'block-feedback-block-note-icon-info::after {',
233
+ ' content: "提示";',
234
+ '}',
235
+ ].join(LF);
236
+ }
237
+ //# sourceMappingURL=pageUi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pageUi.js","sourceRoot":"","sources":["../src/pageUi.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  /** base-paint/spec/charts:图表层契约(#78 冻结面)。
2
2
  *
3
- * B4:**去掉**「技能自营 canvas」白名单例外——唯一实现住 base-paint。
3
+ * B4:**去掉**「技能自营 canvas」允许清单例外——唯一实现住 base-paint。
4
4
  * 纯 CSS + SVG 字符串产出(无 `<canvas>`、无第三方、无 `node:`),
5
5
  * 结构违规**直接抛错**,空数组走 `emptyState` 联动(不静默空图)。
6
6
  */
@@ -66,7 +66,9 @@ export interface ChartCommonOptions {
66
66
  readonly emptyText?: string;
67
67
  readonly tooltip?: boolean;
68
68
  readonly labels?: 'edge' | 'all' | 'none' | 'select';
69
- readonly showValues?: boolean | 'edge';
69
+ /** 数值标签:`true` 全量/`false` 无/`'edge'` 首尾有效点/`'last'` 只标末值(#567)。
70
+ * `'last'` 与折线 `highlightLast` 同开时只出一枚(末值文本不双印,见 `charts.ts`)。 */
71
+ readonly showValues?: boolean | 'edge' | 'last';
70
72
  readonly labelRotate?: number;
71
73
  readonly yMin?: number;
72
74
  readonly yMax?: number;
@@ -86,6 +88,10 @@ export interface LineChartOptions extends ChartCommonOptions {
86
88
  readonly areaOpacity?: number;
87
89
  readonly yTicks?: number | false;
88
90
  readonly connectNulls?: boolean;
91
+ /** 跨空档形态(#458):`'break'` 缺口处断开(缺省,与今天一致)/`'connect'` 跨空直连
92
+ * (等价 `connectNulls: true`)/`'dashed'` 实线只连两侧都有记录的相邻点、跨空档段另出
93
+ * 同色虚线桥接。显式给定时优先于 `connectNulls`;三档一律不把 `null` 当 0。 */
94
+ readonly gapStyle?: 'break' | 'connect' | 'dashed';
89
95
  readonly legend?: boolean;
90
96
  readonly highlightLast?: boolean;
91
97
  readonly avgLine?: number;
@@ -95,6 +101,9 @@ export interface LineChartOptions extends ChartCommonOptions {
95
101
  readonly fillBetween?: ChartFillBetween;
96
102
  readonly highlightPoints?: 'turns' | 'crossings';
97
103
  readonly series?: readonly ChartSeries[];
104
+ /** X 轴标签抽稀(#567):`labels:'all'` 时每 k 点标一枚(含末点),不给=全标。
105
+ * 与折线自动点抽稀解耦:`showDots:true`(显式)画满 N 个顶点,`labelEvery:k` 每 k 点标一次。 */
106
+ readonly labelEvery?: number;
98
107
  }
99
108
  export interface BarChartOptions extends ChartCommonOptions {
100
109
  readonly singleColor?: boolean;
@@ -102,6 +111,10 @@ export interface BarChartOptions extends ChartCommonOptions {
102
111
  readonly grouped?: boolean;
103
112
  readonly stackMode?: 'percent' | 'absolute';
104
113
  readonly segNames?: readonly string[];
114
+ /** 数值标签按密度抽稀(#567):相邻标签中心距小于该值(用户单位)时跳过。不给=全标(默认不变)。 */
115
+ readonly valueThin?: number;
116
+ /** Y 轴刻度条数(#567,与折线 `yTicks` 同口径 2–6;不给/`false`=不画,默认不变)。 */
117
+ readonly yTicks?: number | false;
105
118
  }
106
119
  export interface DonutChartOptions extends ChartCommonOptions {
107
120
  readonly size?: number;
@@ -144,7 +157,7 @@ export interface DonutChartInput {
144
157
  readonly items: readonly ChartItem[];
145
158
  readonly options?: DonutChartOptions;
146
159
  }
147
- /** `pct` 非数报错,超界收敛 0~100(旧 §6.5 逐字行为)。 */
160
+ /** `pct` 非数报错,超界统一为 0~100(旧 §6.5 逐字行为)。 */
148
161
  export interface ProgressChartInput {
149
162
  readonly pct: number;
150
163
  readonly options?: ProgressChartOptions;
@@ -1 +1 @@
1
- {"version":3,"file":"charts.d.ts","sourceRoot":"","sources":["../../src/spec/charts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"charts.d.ts","sourceRoot":"","sources":["../../src/spec/charts.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  /** base-paint/spec/charts:图表层契约(#78 冻结面)。
2
2
  *
3
- * B4:**去掉**「技能自营 canvas」白名单例外——唯一实现住 base-paint。
3
+ * B4:**去掉**「技能自营 canvas」允许清单例外——唯一实现住 base-paint。
4
4
  * 纯 CSS + SVG 字符串产出(无 `<canvas>`、无第三方、无 `node:`),
5
5
  * 结构违规**直接抛错**,空数组走 `emptyState` 联动(不静默空图)。
6
6
  */
@@ -1 +1 @@
1
- {"version":3,"file":"charts.js","sourceRoot":"","sources":["../../src/spec/charts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,CAAU,CAAC;AAgNnH,MAAM,CAAC,MAAM,eAAe,GAAG,cAAc,CAAC;AAE9C,kCAAkC;AAClC,MAAM,CAAC,MAAM,oBAAoB,GAAG,OAAgB,CAAC;AAErD,qCAAqC;AACrC,MAAM,CAAC,MAAM,gBAAgB,GAAG,YAAqB,CAAC;AAEtD,qCAAqC;AACrC,MAAM,CAAC,MAAM,gBAAgB,GAAG,cAAuB,CAAC;AAExD,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7C,WAAW,EAAE,GAAG;IAChB,eAAe,EAAE,CAAC;IAClB,kBAAkB,EAAE,GAAG;IACvB,YAAY,EAAE,CAAC;CACP,CAAC,CAAC;AAEZ,2CAA2C;AAC3C,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;CACD,CAAC;AAEX,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,mBAAmB,EAAE,aAAa,EAAE,cAAc,CAAU,CAAC"}
1
+ {"version":3,"file":"charts.js","sourceRoot":"","sources":["../../src/spec/charts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,CAAU,CAAC;AA6NnH,MAAM,CAAC,MAAM,eAAe,GAAG,cAAc,CAAC;AAE9C,kCAAkC;AAClC,MAAM,CAAC,MAAM,oBAAoB,GAAG,OAAgB,CAAC;AAErD,qCAAqC;AACrC,MAAM,CAAC,MAAM,gBAAgB,GAAG,YAAqB,CAAC;AAEtD,qCAAqC;AACrC,MAAM,CAAC,MAAM,gBAAgB,GAAG,cAAuB,CAAC;AAExD,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7C,WAAW,EAAE,GAAG;IAChB,eAAe,EAAE,CAAC;IAClB,kBAAkB,EAAE,GAAG;IACvB,YAAY,EAAE,CAAC;CACP,CAAC,CAAC;AAEZ,2CAA2C;AAC3C,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;CACD,CAAC;AAEX,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,mBAAmB,EAAE,aAAa,EAAE,cAAc,CAAU,CAAC"}
@@ -74,7 +74,7 @@ export interface CopyRuntime {
74
74
  /** 冻结签名:`createCopyRuntime(ports: CopyPorts): CopyRuntime`。 */
75
75
  export type CreateCopyRuntime = (ports: CopyPorts) => CopyRuntime;
76
76
  /** 复制按钮上承载 `actionId` 的属性名(FX-17④,冻结):`renderActionBar`/`renderErrorReceipt`
77
- * /HELP 壳**渲染期**写入该属性;调用方的 `CopyActionHostPort.listActionIds()` 据此发现 id 集合。
77
+ * /HELP模板**渲染期**写入该属性;调用方的 `CopyActionHostPort.listActionIds()` 据此发现 id 集合。
78
78
  * 文本仍走 `SharedHelpersInput.dataAttr`(缺省 `DEFAULT_DATA_ATTR = 'data-t'`)——id 与文本是两个属性,不得混用。 */
79
79
  export declare const ACTION_ID_ATTR: "data-action-id";
80
80
  /** 复制按钮的 actionId 冻结表(FX-17②):`actionBar` 的复制数据/日志 + `errorReceipt` 的两个按钮。
@@ -86,7 +86,7 @@ export declare const ACTION_ID_ATTR: "data-action-id";
86
86
  *
87
87
  * 约定:全部 base-paint actionId(含 `HELP_COPY_ACTIONS`)在**同一页面内唯一**;调用方可覆盖
88
88
  * `ErrorReceiptInput.dataActionId`/`logActionId`,覆盖值同样必须唯一且可被 `listActionIds()` 发现。
89
- * **例外(#78 记账,R27)**:HELP 壳按 §3.5.3 字面把三个复制目标的 actionId **逐字**写入**每张**场景卡
89
+ * **例外(#78 记账,R27)**:HELP模板按 §3.5.3 字面把三个复制目标的 actionId **逐字**写入**每张**场景卡
90
90
  * (多场景卡必然页内重复,且 §3.5.3 禁「另定通配约定」)。歧义由宿主适配端解决——
91
91
  * `readDataText(actionId)` 在激活处理内**同步**调用(§3.3 语义 2),适配端按「最近一次激活元素」关联。
92
92
  */
@@ -107,7 +107,7 @@ export interface CopyActionHostPort {
107
107
  * 顺序无语义、可含重复但须自行去重)。`bindCopyAction` **只**订阅这里列出的 id——
108
108
  * 不得猜 id、不得约定通配前缀、不得订阅未列出的 id。
109
109
  * 允许包含**非复制按钮**(如 `ActionBarButton` 的场景按钮):binder 一律靠
110
- * `readDataText → undefined` 跳过,不报错、不另设白名单。 */
110
+ * `readDataText → undefined` 跳过,不报错、不另设允许清单。 */
111
111
  listActionIds(): readonly string[];
112
112
  /** 读取渲染期写入的复制文本(`dataAttr`,缺省 `data-t`);该 actionId 无文本返回 undefined。 */
113
113
  readDataText(actionId: string): string | undefined;
@@ -223,6 +223,24 @@ export interface CopyButtonInput {
223
223
  /** 渲染期已序列化的文本(走 buildDataText/buildLogText),存 `data-t`,零注入面。 */
224
224
  readonly text?: string;
225
225
  readonly format?: CopyFormat;
226
+ /** **三格式形态**(#247):给了就出「按钮 + 格式选择菜单」——按钮只开合菜单、**不写** `data-t`
227
+ * (点了不该直接复制),菜单里每个格式项各带自己的 `data-t`(键=`COPY_FORMATS` 成员,
228
+ * 值=该格式已序列化文本)。菜单项的 `data-action-id` **留空**:三颗逐字不同的 id 会撞
229
+ * `CONTROLS_ERROR_CODES` 的「同次渲染内唯一」口径,而 `listActionIds()` 允许含重复
230
+ * (契约 §3.3 FX-17②),故三项共用按钮那颗 `actionId`,靠 `data-t` 分辨——
231
+ * 与 HELP 速查台逐行写同一冻结 id 同一口径(§3.5.3;记账见 `docs/base-paint-contract.md` §3.3)。
232
+ * 与 `text` 互斥:同给 → 抛 `ControlsError` code `bad-input`。 */
233
+ readonly formats?: CopyFormatTexts;
234
+ }
235
+ /** 复制数据的三格式形态(#247):三个格式各自**渲染期已序列化**的文本(值经 `data-t` 进页面)。
236
+ * 只在与 `CopyButtonInput.text` 二选一时出现,故字段不设可选位——三个格式恒齐(`COPY_FORMATS`)。 */
237
+ export interface CopyFormatTexts {
238
+ readonly text: string;
239
+ readonly json: string;
240
+ readonly csv: string;
241
+ /** 每个格式项右侧的用途提示(老仓原样:`粘贴给 AI / 自己看`/`结构化存档`/`表格导入`)。
242
+ * **给人看的字**不落页面交付:调用方不给就不出提示行(同 `DataTextInput` 的 title/note 口径)。 */
243
+ readonly hints?: readonly [string, string, string] | readonly string[];
226
244
  }
227
245
  export interface ActionBarInput {
228
246
  readonly buttons?: readonly ActionBarButton[];
@@ -234,7 +252,14 @@ export declare const ACTION_BAR_DEFAULTS: Readonly<{
234
252
  readonly copyLogLabel: "复制日志";
235
253
  readonly ghostOwnRow: true;
236
254
  readonly evenRowPairs: 2;
237
- readonly minHeightPx: 40;
255
+ /** 可点控件的最小命中高度(px):**全宽档一律 44**,不只窄屏。
256
+ * #525 收口:`t516-判据-版式.mjs` 实测 16 页在 **1440 档**各有 5~49 处只有 40px 的命中的
257
+ * 可点元素,逐条点名 `button.ilife-copy-btn`(61 处)与 `button.ilife-copy-menu-item`(42 处,
258
+ * 「复制数据 ▾」展开后的三格式菜单项);窄屏那档本来就被各 `@media` 抬到 44,桌面档漏了。
259
+ * 用户裁定「触摸区 ≥44×44」是全宽口径(`t525` 票面判据 3 原写「窄屏」,本条按全宽执行)。
260
+ * **这是值变更**:旧值 40(#76 冻结基线)→ 44;`spec/index.ts` 的签名快照与
261
+ * `test/contract-signatures.test.mjs` 的那一行同步改(读这个常量的两处测试自动跟随)。 */
262
+ readonly minHeightPx: 44;
238
263
  readonly fontSizePx: 12;
239
264
  readonly fontWeight: 600;
240
265
  readonly ghostBorderAlpha: 0.38;
@@ -253,7 +278,7 @@ export interface StatusBadgeInput {
253
278
  readonly status: StatusKind;
254
279
  readonly text?: string;
255
280
  }
256
- /** 非法 status 白名单降级 empty(不抛错,防无样式徽章)。 */
281
+ /** 非法 status 允许清单降级 empty(不抛错,防无样式徽章)。 */
257
282
  export type RenderStatusBadge = (input: StatusBadgeInput) => string;
258
283
  export interface EmptyStateInput {
259
284
  readonly icon?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"controls.d.ts","sourceRoot":"","sources":["../../src/spec/controls.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"controls.d.ts","sourceRoot":"","sources":["../../src/spec/controls.ts"],"names":[],"mappings":"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"}
@@ -30,7 +30,7 @@ export const COPY_TEXT_DEFAULTS = Object.freeze({
30
30
  });
31
31
  /* ── 复制接线(FX-3/FX-17/#90 可直接使用) ────────────────── */
32
32
  /** 复制按钮上承载 `actionId` 的属性名(FX-17④,冻结):`renderActionBar`/`renderErrorReceipt`
33
- * /HELP 壳**渲染期**写入该属性;调用方的 `CopyActionHostPort.listActionIds()` 据此发现 id 集合。
33
+ * /HELP模板**渲染期**写入该属性;调用方的 `CopyActionHostPort.listActionIds()` 据此发现 id 集合。
34
34
  * 文本仍走 `SharedHelpersInput.dataAttr`(缺省 `DEFAULT_DATA_ATTR = 'data-t'`)——id 与文本是两个属性,不得混用。 */
35
35
  export const ACTION_ID_ATTR = 'data-action-id';
36
36
  /** 复制按钮的 actionId 冻结表(FX-17②):`actionBar` 的复制数据/日志 + `errorReceipt` 的两个按钮。
@@ -42,7 +42,7 @@ export const ACTION_ID_ATTR = 'data-action-id';
42
42
  *
43
43
  * 约定:全部 base-paint actionId(含 `HELP_COPY_ACTIONS`)在**同一页面内唯一**;调用方可覆盖
44
44
  * `ErrorReceiptInput.dataActionId`/`logActionId`,覆盖值同样必须唯一且可被 `listActionIds()` 发现。
45
- * **例外(#78 记账,R27)**:HELP 壳按 §3.5.3 字面把三个复制目标的 actionId **逐字**写入**每张**场景卡
45
+ * **例外(#78 记账,R27)**:HELP模板按 §3.5.3 字面把三个复制目标的 actionId **逐字**写入**每张**场景卡
46
46
  * (多场景卡必然页内重复,且 §3.5.3 禁「另定通配约定」)。歧义由宿主适配端解决——
47
47
  * `readDataText(actionId)` 在激活处理内**同步**调用(§3.3 语义 2),适配端按「最近一次激活元素」关联。
48
48
  */
@@ -85,12 +85,25 @@ export const TOAST_DEFAULTS = Object.freeze({
85
85
  });
86
86
  /* ── actionBar(复制三件套) ─────────────────────────────── */
87
87
  export const ACTION_BAR_KINDS = ['primary', 'red', 'ghost'];
88
+ /* #654(负责人 2026-09-16 验收打回,**口径变更**):「有数据位、无日志位」**不再自动补**禁用态复制日志。
89
+ * 原 #336 兜底补它的真实目的是保 ghost 行的**几何**(两颗等宽,别一颗铺满、一颗缩成内容宽);
90
+ * 但它在读页面(没有写库日志)上产出一颗**点不动的控件**——第一性原理下站不住:
91
+ * 一个控件必须真能做它写的那件事。几何改由「列数跟着颗数走」保:单颗时 `renderActionBar` 挂
92
+ * `action-row-ghost-single`(`style.ts` 让它在整行轨道里铺满),两颗真位时照 #247 两列平分。
93
+ * 两边都在场/两边都不在场/仅日志位在场照旧。 */
88
94
  export const ACTION_BAR_DEFAULTS = Object.freeze({
89
95
  copyDataLabel: '复制数据',
90
96
  copyLogLabel: '复制日志',
91
97
  ghostOwnRow: true,
92
98
  evenRowPairs: 2,
93
- minHeightPx: 40,
99
+ /** 可点控件的最小命中高度(px):**全宽档一律 44**,不只窄屏。
100
+ * #525 收口:`t516-判据-版式.mjs` 实测 16 页在 **1440 档**各有 5~49 处只有 40px 的命中的
101
+ * 可点元素,逐条点名 `button.ilife-copy-btn`(61 处)与 `button.ilife-copy-menu-item`(42 处,
102
+ * 「复制数据 ▾」展开后的三格式菜单项);窄屏那档本来就被各 `@media` 抬到 44,桌面档漏了。
103
+ * 用户裁定「触摸区 ≥44×44」是全宽口径(`t525` 票面判据 3 原写「窄屏」,本条按全宽执行)。
104
+ * **这是值变更**:旧值 40(#76 冻结基线)→ 44;`spec/index.ts` 的签名快照与
105
+ * `test/contract-signatures.test.mjs` 的那一行同步改(读这个常量的两处测试自动跟随)。 */
106
+ minHeightPx: 44,
94
107
  fontSizePx: 12,
95
108
  fontWeight: 600,
96
109
  ghostBorderAlpha: 0.38,
@@ -1 +1 @@
1
- {"version":3,"file":"controls.js","sourceRoot":"","sources":["../../src/spec/controls.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"controls.js","sourceRoot":"","sources":["../../src/spec/controls.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** base-paint/spec/help:HELP 壳与 scene-data 契约(#78 冻结面)。
1
+ /** base-paint/spec/help:HELP模板与 scene-data 契约(#78 冻结面)。
2
2
  *
3
3
  * B6:HELP 形态 = HTML 速查台;Q11:取 F3 并回补 F1/F2 的逐场景 CLI 展示与变体示例。
4
4
  * AC-3:场景类型徽章字段取 **`types`(复数)**,不提供 `type` 别名(旧侧
@@ -8,7 +8,7 @@
8
8
  * 该行实为 CSS;模板资产本身用 `s.types`(`help_template.html:224`)。裁定结论不变。
9
9
  * AC-4:`SCENE_DATA_SCHEMA` 是**唯一机读权威**,文档 §3.5 只是它的可读投影。
10
10
  *
11
- * 依赖红线:只许 `import type`(AC-13);壳复用面见 `HelpShellInput`(#88 直接消费)。
11
+ * 依赖红线:只许 `import type`(AC-13);help模板复用面见 `HelpShellInput`(#88 直接消费)。
12
12
  */
13
13
  import type { FillTemplateOutput, TemplateAssets } from './template.js';
14
14
  /** 场景状态只允许两值(旧 `injector.py:168-169`)。 */
@@ -54,16 +54,23 @@ export interface SceneMetaBlock {
54
54
  /** 技能方提供的 HTML 原文,Base 原样透传(转义由技能方自理)。 */
55
55
  readonly html: string;
56
56
  }
57
+ export interface SceneInitBannerStep {
58
+ readonly title: string;
59
+ readonly desc?: string;
60
+ }
57
61
  export interface SceneInitBanner {
58
62
  readonly title: string;
59
63
  readonly subtitle?: string;
60
64
  readonly button_text?: string;
61
65
  readonly prompt?: string;
62
- readonly steps?: readonly string[];
66
+ /** 字符串步与对象步皆可(#242:模板读 `st.title`/`st.desc`,老生产路传对象数组)。 */
67
+ readonly steps?: readonly (string | SceneInitBannerStep)[];
63
68
  }
64
69
  export interface SceneContactItem {
65
70
  readonly label: string;
66
71
  readonly value: string;
72
+ /** 可点标记(#242:模板以 `it.url` 真值+值以 `http` 开头判 `<a>`;生产四家用 `true` 旗标)。 */
73
+ readonly url?: boolean | string;
67
74
  }
68
75
  export interface SceneContact {
69
76
  readonly items: readonly SceneContactItem[];
@@ -257,7 +264,21 @@ export declare const SCENE_DATA_SCHEMA: Readonly<{
257
264
  readonly steps: {
258
265
  readonly type: "array";
259
266
  readonly items: {
260
- readonly type: "string";
267
+ readonly oneOf: readonly [{
268
+ readonly type: "string";
269
+ }, {
270
+ readonly type: "object";
271
+ readonly additionalProperties: false;
272
+ readonly required: readonly ["title"];
273
+ readonly properties: {
274
+ readonly title: {
275
+ readonly type: "string";
276
+ };
277
+ readonly desc: {
278
+ readonly type: "string";
279
+ };
280
+ };
281
+ }];
261
282
  };
262
283
  };
263
284
  };
@@ -280,6 +301,13 @@ export declare const SCENE_DATA_SCHEMA: Readonly<{
280
301
  readonly value: {
281
302
  readonly type: "string";
282
303
  };
304
+ readonly url: {
305
+ readonly oneOf: readonly [{
306
+ readonly type: "boolean";
307
+ }, {
308
+ readonly type: "string";
309
+ }];
310
+ };
283
311
  };
284
312
  };
285
313
  };
@@ -334,10 +362,10 @@ export declare const HELP_COPY_ACTIONS: Readonly<{
334
362
  }>;
335
363
  export interface HelpShellInput {
336
364
  readonly sceneData: SceneData;
337
- /** 共享资产走同一填充器(B3):HELP 壳不得自填。 */
365
+ /** 共享资产走同一填充器(B3):HELP模板不得自填。 */
338
366
  readonly assets: TemplateAssets;
339
367
  readonly strict?: boolean;
340
- /** 覆盖内置壳模板;缺省用 base-paint 自带模板。 */
368
+ /** 覆盖内置help模板;缺省用 base-paint 自带模板。 */
341
369
  readonly template?: string;
342
370
  }
343
371
  /** 冻结签名:`renderHelpShell(input: HelpShellInput): FillTemplateOutput`。 */