skill-chef 0.3.2 → 0.3.13

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 (244) hide show
  1. package/SKILL.md +42 -29
  2. package/dist/add/commands.js +1 -1
  3. package/dist/add/index.d.ts +1 -0
  4. package/dist/add/index.d.ts.map +1 -1
  5. package/dist/add/index.js +1 -0
  6. package/dist/add/index.js.map +1 -1
  7. package/dist/add/pages.d.ts +62 -0
  8. package/dist/add/pages.d.ts.map +1 -0
  9. package/dist/add/pages.js +362 -0
  10. package/dist/add/pages.js.map +1 -0
  11. package/dist/add/routes.d.ts +4 -4
  12. package/dist/add/routes.d.ts.map +1 -1
  13. package/dist/add/routes.js +12 -6
  14. package/dist/add/routes.js.map +1 -1
  15. package/dist/add/run-write.d.ts.map +1 -1
  16. package/dist/add/run-write.js +39 -0
  17. package/dist/add/run-write.js.map +1 -1
  18. package/dist/cli/cmd_read.js +17 -1
  19. package/dist/cli/cmd_read.js.map +1 -1
  20. package/dist/cli/config.d.ts +0 -10
  21. package/dist/cli/config.d.ts.map +1 -1
  22. package/dist/cli/config.js +22 -1
  23. package/dist/cli/config.js.map +1 -1
  24. package/dist/cli/keys.d.ts +1 -1
  25. package/dist/cli/keys.d.ts.map +1 -1
  26. package/dist/cli/keys.js +16 -4
  27. package/dist/cli/keys.js.map +1 -1
  28. package/dist/cook/commands.js +1 -1
  29. package/dist/cook/index.d.ts +2 -1
  30. package/dist/cook/index.d.ts.map +1 -1
  31. package/dist/cook/index.js +1 -1
  32. package/dist/cook/index.js.map +1 -1
  33. package/dist/cook/page-art.d.ts +18 -0
  34. package/dist/cook/page-art.d.ts.map +1 -0
  35. package/dist/cook/page-art.js +30 -0
  36. package/dist/cook/page-art.js.map +1 -0
  37. package/dist/cook/page-css.d.ts +9 -0
  38. package/dist/cook/page-css.d.ts.map +1 -0
  39. package/dist/cook/page-css.js +206 -0
  40. package/dist/cook/page-css.js.map +1 -0
  41. package/dist/cook/page-text.d.ts +28 -0
  42. package/dist/cook/page-text.d.ts.map +1 -0
  43. package/dist/cook/page-text.js +65 -0
  44. package/dist/cook/page-text.js.map +1 -0
  45. package/dist/cook/routes.js +4 -4
  46. package/dist/cook/run.d.ts +56 -1
  47. package/dist/cook/run.d.ts.map +1 -1
  48. package/dist/cook/run.js +252 -22
  49. package/dist/cook/run.js.map +1 -1
  50. package/dist/data/commands.d.ts +6 -7
  51. package/dist/data/commands.d.ts.map +1 -1
  52. package/dist/data/commands.js +15 -8
  53. package/dist/data/commands.js.map +1 -1
  54. package/dist/data/index.d.ts +2 -0
  55. package/dist/data/index.d.ts.map +1 -1
  56. package/dist/data/index.js +2 -0
  57. package/dist/data/index.js.map +1 -1
  58. package/dist/data/pages.d.ts +50 -0
  59. package/dist/data/pages.d.ts.map +1 -0
  60. package/dist/data/pages.js +226 -0
  61. package/dist/data/pages.js.map +1 -0
  62. package/dist/data/routes.d.ts +4 -5
  63. package/dist/data/routes.d.ts.map +1 -1
  64. package/dist/data/routes.js +8 -10
  65. package/dist/data/routes.js.map +1 -1
  66. package/dist/data/run-batch.d.ts +21 -0
  67. package/dist/data/run-batch.d.ts.map +1 -0
  68. package/dist/data/run-batch.js +123 -0
  69. package/dist/data/run-batch.js.map +1 -0
  70. package/dist/data/run-query.d.ts +5 -6
  71. package/dist/data/run-query.d.ts.map +1 -1
  72. package/dist/data/run-query.js +113 -28
  73. package/dist/data/run-query.js.map +1 -1
  74. package/dist/help/lookup.d.ts.map +1 -1
  75. package/dist/help/lookup.js +20 -4
  76. package/dist/help/lookup.js.map +1 -1
  77. package/dist/help/sceneData.d.ts +8 -7
  78. package/dist/help/sceneData.d.ts.map +1 -1
  79. package/dist/help/sceneData.js +22 -21
  80. package/dist/help/sceneData.js.map +1 -1
  81. package/dist/history/commands.js +1 -1
  82. package/dist/history/page-css.d.ts +12 -0
  83. package/dist/history/page-css.d.ts.map +1 -0
  84. package/dist/history/page-css.js +208 -0
  85. package/dist/history/page-css.js.map +1 -0
  86. package/dist/history/pages.d.ts +77 -0
  87. package/dist/history/pages.d.ts.map +1 -0
  88. package/dist/history/pages.js +282 -0
  89. package/dist/history/pages.js.map +1 -0
  90. package/dist/history/routes.d.ts +4 -6
  91. package/dist/history/routes.d.ts.map +1 -1
  92. package/dist/history/routes.js +22 -16
  93. package/dist/history/routes.js.map +1 -1
  94. package/dist/history/run-query.d.ts +48 -0
  95. package/dist/history/run-query.d.ts.map +1 -1
  96. package/dist/history/run-query.js +96 -10
  97. package/dist/history/run-query.js.map +1 -1
  98. package/dist/history/run-record.d.ts +12 -2
  99. package/dist/history/run-record.d.ts.map +1 -1
  100. package/dist/history/run-record.js +28 -14
  101. package/dist/history/run-record.js.map +1 -1
  102. package/dist/history/validate.d.ts +22 -0
  103. package/dist/history/validate.d.ts.map +1 -0
  104. package/dist/history/validate.js +69 -0
  105. package/dist/history/validate.js.map +1 -0
  106. package/dist/policy/wakewords.d.ts +1 -1
  107. package/dist/policy/wakewords.d.ts.map +1 -1
  108. package/dist/policy/wakewords.js +23 -2
  109. package/dist/policy/wakewords.js.map +1 -1
  110. package/dist/relation/commands.d.ts +6 -5
  111. package/dist/relation/commands.d.ts.map +1 -1
  112. package/dist/relation/commands.js +23 -6
  113. package/dist/relation/commands.js.map +1 -1
  114. package/dist/relation/index.d.ts +3 -0
  115. package/dist/relation/index.d.ts.map +1 -1
  116. package/dist/relation/index.js +3 -0
  117. package/dist/relation/index.js.map +1 -1
  118. package/dist/relation/pages.d.ts +37 -0
  119. package/dist/relation/pages.d.ts.map +1 -0
  120. package/dist/relation/pages.js +224 -0
  121. package/dist/relation/pages.js.map +1 -0
  122. package/dist/relation/routes.d.ts +6 -5
  123. package/dist/relation/routes.d.ts.map +1 -1
  124. package/dist/relation/routes.js +17 -16
  125. package/dist/relation/routes.js.map +1 -1
  126. package/dist/relation/run-query.d.ts +10 -0
  127. package/dist/relation/run-query.d.ts.map +1 -0
  128. package/dist/relation/run-query.js +104 -0
  129. package/dist/relation/run-query.js.map +1 -0
  130. package/dist/relation/run-write.d.ts +13 -0
  131. package/dist/relation/run-write.d.ts.map +1 -0
  132. package/dist/relation/run-write.js +114 -0
  133. package/dist/relation/run-write.js.map +1 -0
  134. package/dist/relation/shapes.d.ts +8 -0
  135. package/dist/relation/shapes.d.ts.map +1 -0
  136. package/dist/relation/shapes.js +153 -0
  137. package/dist/relation/shapes.js.map +1 -0
  138. package/dist/relation/treeShapes.d.ts +23 -0
  139. package/dist/relation/treeShapes.d.ts.map +1 -0
  140. package/dist/relation/treeShapes.js +289 -0
  141. package/dist/relation/treeShapes.js.map +1 -0
  142. package/dist/render/copyArea.d.ts +67 -0
  143. package/dist/render/copyArea.d.ts.map +1 -0
  144. package/dist/render/copyArea.js +146 -0
  145. package/dist/render/copyArea.js.map +1 -0
  146. package/dist/render/envelope.d.ts.map +1 -1
  147. package/dist/render/envelope.js +4 -0
  148. package/dist/render/envelope.js.map +1 -1
  149. package/dist/render/index.d.ts +7 -0
  150. package/dist/render/index.d.ts.map +1 -1
  151. package/dist/render/index.js +7 -0
  152. package/dist/render/index.js.map +1 -1
  153. package/dist/render/sceneBand.d.ts +36 -0
  154. package/dist/render/sceneBand.d.ts.map +1 -0
  155. package/dist/render/sceneBand.js +166 -0
  156. package/dist/render/sceneBand.js.map +1 -0
  157. package/dist/render/sceneRhythm.d.ts +6 -0
  158. package/dist/render/sceneRhythm.d.ts.map +1 -0
  159. package/dist/render/sceneRhythm.js +149 -0
  160. package/dist/render/sceneRhythm.js.map +1 -0
  161. package/dist/render/sceneShell.d.ts +17 -0
  162. package/dist/render/sceneShell.d.ts.map +1 -0
  163. package/dist/render/sceneShell.js +46 -0
  164. package/dist/render/sceneShell.js.map +1 -0
  165. package/dist/render/skin.d.ts +13 -0
  166. package/dist/render/skin.d.ts.map +1 -0
  167. package/dist/render/skin.js +282 -0
  168. package/dist/render/skin.js.map +1 -0
  169. package/dist/search/routes.d.ts +12 -4
  170. package/dist/search/routes.d.ts.map +1 -1
  171. package/dist/search/routes.js +39 -7
  172. package/dist/search/routes.js.map +1 -1
  173. package/dist/search/run.d.ts +10 -2
  174. package/dist/search/run.d.ts.map +1 -1
  175. package/dist/search/run.js +61 -9
  176. package/dist/search/run.js.map +1 -1
  177. package/dist/setup/commands.d.ts +5 -5
  178. package/dist/setup/commands.d.ts.map +1 -1
  179. package/dist/setup/commands.js +14 -6
  180. package/dist/setup/commands.js.map +1 -1
  181. package/dist/setup/index.d.ts +3 -5
  182. package/dist/setup/index.d.ts.map +1 -1
  183. package/dist/setup/index.js +3 -5
  184. package/dist/setup/index.js.map +1 -1
  185. package/dist/setup/pages.d.ts +19 -0
  186. package/dist/setup/pages.d.ts.map +1 -0
  187. package/dist/setup/pages.js +163 -0
  188. package/dist/setup/pages.js.map +1 -0
  189. package/dist/setup/routes.d.ts +4 -5
  190. package/dist/setup/routes.d.ts.map +1 -1
  191. package/dist/setup/routes.js +7 -8
  192. package/dist/setup/routes.js.map +1 -1
  193. package/dist/setup/run-init.d.ts +11 -0
  194. package/dist/setup/run-init.d.ts.map +1 -0
  195. package/dist/setup/run-init.js +19 -0
  196. package/dist/setup/run-init.js.map +1 -0
  197. package/dist/shared/command-spec.d.ts +5 -3
  198. package/dist/shared/command-spec.d.ts.map +1 -1
  199. package/dist/shopping/commands.js +1 -1
  200. package/dist/shopping/commands.js.map +1 -1
  201. package/dist/shopping/index.d.ts +1 -0
  202. package/dist/shopping/index.d.ts.map +1 -1
  203. package/dist/shopping/index.js +1 -0
  204. package/dist/shopping/index.js.map +1 -1
  205. package/dist/shopping/pages.d.ts +22 -0
  206. package/dist/shopping/pages.d.ts.map +1 -0
  207. package/dist/shopping/pages.js +170 -0
  208. package/dist/shopping/pages.js.map +1 -0
  209. package/dist/shopping/routes.js +4 -4
  210. package/dist/shopping/routes.js.map +1 -1
  211. package/dist/shopping/run.d.ts +9 -5
  212. package/dist/shopping/run.d.ts.map +1 -1
  213. package/dist/shopping/run.js +58 -10
  214. package/dist/shopping/run.js.map +1 -1
  215. package/dist/triggers/chef-scenes.d.ts +3 -2
  216. package/dist/triggers/chef-scenes.d.ts.map +1 -1
  217. package/dist/triggers/chef-scenes.js +16 -15
  218. package/dist/triggers/chef-scenes.js.map +1 -1
  219. package/dist/update/routes.d.ts +6 -4
  220. package/dist/update/routes.d.ts.map +1 -1
  221. package/dist/update/routes.js +20 -6
  222. package/dist/update/routes.js.map +1 -1
  223. package/dist/update/run-write.d.ts.map +1 -1
  224. package/dist/update/run-write.js +211 -1
  225. package/dist/update/run-write.js.map +1 -1
  226. package/dist/view/commands.js +1 -1
  227. package/dist/view/page.d.ts +25 -0
  228. package/dist/view/page.d.ts.map +1 -0
  229. package/dist/view/page.js +306 -0
  230. package/dist/view/page.js.map +1 -0
  231. package/dist/view/pageCss.d.ts +8 -0
  232. package/dist/view/pageCss.d.ts.map +1 -0
  233. package/dist/view/pageCss.js +327 -0
  234. package/dist/view/pageCss.js.map +1 -0
  235. package/dist/view/pageSection.d.ts +21 -0
  236. package/dist/view/pageSection.d.ts.map +1 -0
  237. package/dist/view/pageSection.js +59 -0
  238. package/dist/view/pageSection.js.map +1 -0
  239. package/dist/view/routes.js +7 -7
  240. package/dist/view/run.d.ts +5 -1
  241. package/dist/view/run.d.ts.map +1 -1
  242. package/dist/view/run.js +66 -7
  243. package/dist/view/run.js.map +1 -1
  244. package/package.json +3 -3
@@ -0,0 +1,149 @@
1
+ /** #873 第三轮 · 页族的两条共用视觉标准:**色彩锚点密度**(全族)与**首屏填满度**(回执族)。
2
+ *
3
+ * 为什么按族出而不是按页出:48 页是 10 个域各写一套收口的,参差就出在「各写一套」上。
4
+ * 本轮把两件事收成族级:这两段样式由页壳装配件按族拼进 `extraCss`(**一页只带本族那一段**),
5
+ * 域里再写页内版式也盖不住它——同一件事只有一个落点。
6
+ *
7
+ * 色彩锚点密度(③,全族):判官对第 47/30/24 格的同一句原话是「几乎只有一枚蓝按钮/静态灰白」。
8
+ * 把**胶囊**与**瓦片**统一吃到同一个暖色基(`CHART_PALETTE` 的橙 / 黄派生浅底),
9
+ * 再按 `nth-child` 轮一圈「蓝 → 橙 → 青」的点缀色——这是第 21 格(92 分)那条
10
+ * 「青/橙/蓝三色胶囊成矩阵」的做法,本轮把它变成全批共用的标准。浅底一律 ≤ .16,
11
+ * 文字色不动(仍是主色 `--blue2`,压这些浅底仍有 4.5:1 以上)。
12
+ *
13
+ * 首屏填满度(②,**只给回执族**):判官对第 47 格的原话是「长页首屏留白撑场/信息密度偏低」,
14
+ * 实测 390×820 首屏正文最底一行距视口底约 180px。回执族的页最短,就它需要把节奏铺开:
15
+ * 块距 16 → 26px、瓦片与卡片内距各抬一档、可点件抬到 54px、表格与列表行内距各抬一档。
16
+ * **一个字的内容都不编**——只用行距/块距/内距/可点件高度把既有内容铺满一屏。
17
+ * 结果族与过程族**不动节奏**:第 21 格(92)与第 45 格(90)都在这两族里,是本票的守线页,
18
+ * 长页也不需要再铺(它们的首屏本来就排满)。
19
+ */
20
+ import { CHART_PALETTE } from 'base-paint';
21
+ /** 换行(仓库口径:不写字面换行转义)。 */
22
+ const LF = String.fromCharCode(10);
23
+ /** hex → `r, g, b`(与 `skin.ts` 同一条换算,本件不引它的内部件)。 */
24
+ function rgbOf(hex) {
25
+ const n = Number.parseInt(hex.slice(1), 16);
26
+ return ((n >> 16) & 255) + ', ' + ((n >> 8) & 255) + ', ' + (n & 255);
27
+ }
28
+ const BLUE_RGB = rgbOf(CHART_PALETTE[0]);
29
+ const ORANGE_RGB = rgbOf(CHART_PALETTE[2]);
30
+ const YELLOW_RGB = rgbOf(CHART_PALETTE[6]);
31
+ const TEAL_RGB = rgbOf(CHART_PALETTE[9]);
32
+ /** 三枚点缀色(蓝/橙/青)——与第 21 格那条「三色胶囊矩阵」同一组色,取自调色板下标。 */
33
+ const ACCENTS = [BLUE_RGB, ORANGE_RGB, TEAL_RGB];
34
+ /** 色彩锚点密度(③):胶囊与瓦片的底色 + 轮转的点缀色描边/左缘。全族共用。 */
35
+ function densityCss(root, p) {
36
+ const chip = root + ' .' + p + 'block-chip';
37
+ const tile = root + ' .' + p + 'block-fact-strip-item';
38
+ const lines = [
39
+ '/* ③ 色彩锚点密度:胶囊与瓦片吃同一个暖色基,再按位置轮一圈蓝/橙/青点缀色 */',
40
+ chip + ' {',
41
+ ' border-color: rgba(' + ORANGE_RGB + ', .32);',
42
+ ' background-color: rgba(' + ORANGE_RGB + ', .12);',
43
+ '}',
44
+ tile + ' {',
45
+ ' border-color: rgba(' + ORANGE_RGB + ', .28);',
46
+ ' background-color: rgba(' + YELLOW_RGB + ', .10);',
47
+ '}',
48
+ ];
49
+ // 轮转:一枚色板三档,写在**一处**;`nth-child` 只按位置取色,不载任何语义。
50
+ lines.push(root + ' .' + p + 'block-chip-row > .' + p + 'block-chip:nth-child(3n+1),');
51
+ lines.push(root + ' .' + p + 'block-fact-strip-item:nth-child(3n+1) {');
52
+ lines.push(' border-color: rgba(' + ACCENTS[0] + ', .34);');
53
+ lines.push('}');
54
+ lines.push(root + ' .' + p + 'block-chip-row > .' + p + 'block-chip:nth-child(3n+2),');
55
+ lines.push(root + ' .' + p + 'block-fact-strip-item:nth-child(3n+2) {');
56
+ lines.push(' border-color: rgba(' + ACCENTS[1] + ', .38);');
57
+ lines.push('}');
58
+ lines.push(root + ' .' + p + 'block-chip-row > .' + p + 'block-chip:nth-child(3n+3),');
59
+ lines.push(root + ' .' + p + 'block-fact-strip-item:nth-child(3n+3) {');
60
+ lines.push(' border-color: rgba(' + ACCENTS[2] + ', .34);');
61
+ lines.push('}');
62
+ lines.push(root + ' .' + p + 'block-chip-row > .' + p + 'block-chip:nth-child(3n+1) {');
63
+ lines.push(' background-color: rgba(' + ACCENTS[0] + ', .12);');
64
+ lines.push('}');
65
+ lines.push(root + ' .' + p + 'block-chip-row > .' + p + 'block-chip:nth-child(3n+2) {');
66
+ lines.push(' background-color: rgba(' + ACCENTS[1] + ', .16);');
67
+ lines.push('}');
68
+ lines.push(root + ' .' + p + 'block-chip-row > .' + p + 'block-chip:nth-child(3n+3) {');
69
+ lines.push(' background-color: rgba(' + ACCENTS[2] + ', .15);');
70
+ lines.push('}');
71
+ lines.push(root + ' .' + p + 'block-fact-strip-item:nth-child(3n+1) { border-left-color: ' + CHART_PALETTE[0] + '; }');
72
+ lines.push(root + ' .' + p + 'block-fact-strip-item:nth-child(3n+2) { border-left-color: ' + CHART_PALETTE[2] + '; }');
73
+ lines.push(root + ' .' + p + 'block-fact-strip-item:nth-child(3n+3) { border-left-color: ' + CHART_PALETTE[9] + '; }');
74
+ return lines;
75
+ }
76
+ /** 首屏填满度(②):回执族的节奏铺开。**只抬内距与外距,不动字号档、不编内容。** */
77
+ function receiptFillCss(root, p) {
78
+ return [
79
+ '/* ② 首屏填满度(回执族):块距与内距各抬一档,把既有内容铺到一屏(不编内容) */',
80
+ root + ' .' + p + 'block-page-shell-body > * + .' + p + 'block {',
81
+ ' margin-top: 26px;',
82
+ '}',
83
+ root + ' .' + p + 'block-fact-strip-item {',
84
+ ' padding: 12px 14px;',
85
+ '}',
86
+ root + ' .' + p + 'block-conclusion {',
87
+ ' padding: 18px 18px;',
88
+ '}',
89
+ root + ' .' + p + 'block-disclosure-summary {',
90
+ ' min-height: 52px;',
91
+ '}',
92
+ root + ' .' + p + 'block-data-table th {',
93
+ ' padding: 12px 14px;',
94
+ '}',
95
+ root + ' .' + p + 'block-data-table td {',
96
+ ' padding: 15px 14px;',
97
+ '}',
98
+ root + ' .' + p + 'block-list-rows-row {',
99
+ ' padding: 14px 14px;',
100
+ '}',
101
+ root + ' .' + p + 'block-change-row {',
102
+ ' padding: 12px 0;',
103
+ '}',
104
+ root + ' .' + p + 'block-copy-block {',
105
+ ' padding: 18px 16px 20px;',
106
+ '}',
107
+ root + ' .' + p + 'block-prose {',
108
+ ' line-height: 1.85;',
109
+ '}',
110
+ /* 可点件抬到 54px(≥44 是硬下限,抬高不违规):一行两颗按钮的页里,这一档就补回 20px。 */
111
+ root + ' .' + p + 'action-btn,',
112
+ root + ' .' + p + 'copy-btn {',
113
+ ' min-height: 54px;',
114
+ '}',
115
+ /* 动作行单独再抬一档:它是回执页的最后一块,抬它把首屏最底那一行往下推。 */
116
+ root + ' .' + p + 'action-bar {',
117
+ ' margin: 26px 0 20px;',
118
+ '}',
119
+ /* 只靠内距铺不满最短的那几页(第 42/44 格实测首屏最底一行只到 y=465,距底 355px)⇒ 窄档再补一条
120
+ **分布**:版面根撑到一屏高、正文列吃满余量并按 `space-between` 摊开。
121
+ 取值 `calc(100vh - 60px)`=扣除版面根自己的上下内距(窄档 20px + 60px)与页面顶那条 6px 品牌带、
122
+ 末块的 20px 下外边距之后余下的差额;内容比一屏短时收口落在视口底,长页 `min-height` 不起作用。
123
+ **只在窄档**:宽档(≥1001)正文列是公共层 `pageUi.ts` ⑧ 的三轨栅格,本段不许覆盖它。 */
124
+ '@media (max-width: 640px) {',
125
+ ' ' + root + ' .' + p + 'block-page-shell {',
126
+ ' display: flex;',
127
+ ' flex-direction: column;',
128
+ ' min-height: calc(100vh - 60px);',
129
+ ' }',
130
+ ' ' + root + ' .' + p + 'block-page-shell-body {',
131
+ ' display: flex;',
132
+ ' flex: 1 1 auto;',
133
+ ' flex-direction: column;',
134
+ ' justify-content: space-between;',
135
+ ' }',
136
+ '}',
137
+ ];
138
+ }
139
+ /** 按族出这一段(页壳装配件把它拼进 `extraCss`)。恒返回非空 CSS 文本。 */
140
+ export function sceneFamilyCss(family, input) {
141
+ const p = input !== undefined && input !== null
142
+ && typeof input.prefix === 'string' && input.prefix !== '' ? input.prefix : 'ilife-';
143
+ const root = '.' + p + 'page-ui';
144
+ const lines = densityCss(root, p);
145
+ if (family === 'receipt')
146
+ lines.push(...receiptFillCss(root, p));
147
+ return lines.join(LF);
148
+ }
149
+ //# sourceMappingURL=sceneRhythm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sceneRhythm.js","sourceRoot":"","sources":["../../src/render/sceneRhythm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { type SceneFamily } from './sceneBand.js';
2
+ /** 整页装配的入参(除 `family` 外与各域原来的 `renderDocShell` 调用逐项同形)。 */
3
+ export interface SceneShellInput {
4
+ /** 这一页属于哪个页族(按域给一个值;三族见 `sceneBand.ts`)。 */
5
+ readonly family: SceneFamily;
6
+ /** head 的 `<title>` 文本。 */
7
+ readonly docTitle: string;
8
+ /** 已装配好的版面根(各域 `renderPageShell(...)` 的产出,受信透传)。 */
9
+ readonly bodyHtml: string;
10
+ /** 各域自己的页内版式样式:**一字不动地接在族级样式之后**(不传/空串=不追加)。 */
11
+ readonly extraCss?: string;
12
+ /** 要不要注入图表助手资源(不给=不注入,与 `renderDocShell` 同口径)。 */
13
+ readonly charts?: boolean;
14
+ }
15
+ /** 整页装配(装饰带 + 族级样式 + 文档壳)。一页只调一次。 */
16
+ export declare function renderSceneShell(input: SceneShellInput): string;
17
+ //# sourceMappingURL=sceneShell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sceneShell.d.ts","sourceRoot":"","sources":["../../src/render/sceneShell.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAiC,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAOjF,2DAA2D;AAC3D,MAAM,WAAW,eAAe;IAC9B,4CAA4C;IAC5C,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,2BAA2B;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,oDAAoD;IACpD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,gDAAgD;IAChD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,kDAAkD;IAClD,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,qCAAqC;AACrC,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAgB/D"}
@@ -0,0 +1,46 @@
1
+ /** #873 第三轮 · 私家大厨的**页壳装配件**:10 个域页壳共用的那一次整页装配。
2
+ *
3
+ * 为什么要有这一件:两轮下来 48 页的样式入口虽然统一到了 `chefSceneCss()`,但**整页装配**仍是
4
+ * 每域各拼一遍(`renderPageShell` 产版面根,`renderDocShell` 包文档壳,各自再拼 `extraCss`)。
5
+ * 第三轮要加的两件东西都带**标记**(族级装饰带)或**族级样式**(首屏填满度)——散在 10 处拼就会
6
+ * 第二次走散。收成一件之后,「这一页属于哪个族、带哪条装饰带、带哪段族级样式」只有这一个落点。
7
+ *
8
+ * 入参取的槽位与各域原来的 `renderDocShell({ docTitle, bodyHtml, extraCss, pageUi: true })` 逐项同形,
9
+ * 只多一个 `family`:各域的页壳调用因此仍是**一次调用替换**,各域自己的 `renderPageShell(...)`
10
+ * 与页内那段样式**一字不动**。
11
+ *
12
+ * 装配顺序(各域那一段页内样式仍**追加在最后**):
13
+ * `chefSceneCss()`(公共层两配方 + 第一轮皮肤)
14
+ * + `sceneBandCss()`(装饰带的壳)
15
+ * + `sceneFamilyCss(family)`(色彩锚点密度,回执族另加首屏填满度)
16
+ * + 调用方给的 `extraCss`
17
+ *
18
+ * 装饰带插在**版面根的第一个子节点**(页头眉标之前):它是品牌横带,占的是页头那一格,
19
+ * 不与页内任何区块抢位置。插法是字符串级的——版面根的开启标签由 `renderPageShell` 产出,
20
+ * 这里只在它之后插一段;找不到开启标签就退回「放在版面根之前」(不静默丢标记)。
21
+ */
22
+ import { renderDocShell } from 'base-paint/docShell';
23
+ import { renderSceneBand, sceneBandCss } from './sceneBand.js';
24
+ import { sceneFamilyCss } from './sceneRhythm.js';
25
+ import { chefSceneCss } from './skin.js';
26
+ /** 换行(仓库口径:不写字面换行转义)。 */
27
+ const LF = String.fromCharCode(10);
28
+ /** 整页装配(装饰带 + 族级样式 + 文档壳)。一页只调一次。 */
29
+ export function renderSceneShell(input) {
30
+ const band = renderSceneBand(input.family);
31
+ const open = input.bodyHtml.indexOf('>');
32
+ const bodyHtml = open < 0 || !input.bodyHtml.startsWith('<')
33
+ ? band + input.bodyHtml
34
+ : input.bodyHtml.slice(0, open + 1) + band + input.bodyHtml.slice(open + 1);
35
+ const extra = input.extraCss === undefined || input.extraCss === ''
36
+ ? ''
37
+ : LF + input.extraCss;
38
+ return renderDocShell({
39
+ docTitle: input.docTitle,
40
+ bodyHtml,
41
+ extraCss: chefSceneCss() + LF + sceneBandCss() + LF + sceneFamilyCss(input.family) + extra,
42
+ pageUi: true,
43
+ charts: input.charts === true,
44
+ });
45
+ }
46
+ //# sourceMappingURL=sceneShell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sceneShell.js","sourceRoot":"","sources":["../../src/render/sceneShell.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAoB,MAAM,gBAAgB,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,yBAAyB;AACzB,MAAM,EAAE,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AAgBnC,qCAAqC;AACrC,MAAM,UAAU,gBAAgB,CAAC,KAAsB;IACrD,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC;QAC1D,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,QAAQ;QACvB,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IAC9E,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,KAAK,EAAE;QACjE,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC;IACxB,OAAO,cAAc,CAAC;QACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,QAAQ;QACR,QAAQ,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,YAAY,EAAE,GAAG,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK;QAC1F,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK,CAAC,MAAM,KAAK,IAAI;KAC9B,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,13 @@
1
+ /** 皮肤的入参(与 `pageUiCss`/`pageShapeCss` 同口径)。 */
2
+ export interface ChefSkinCssInput {
3
+ /** 类名前缀;缺省 `ilife-`。 */
4
+ readonly prefix?: string;
5
+ }
6
+ /** 私家大厨视觉皮肤的样式资产唯一产出者。恒返回非空 CSS 文本。 */
7
+ export declare function chefSkinCss(input?: ChefSkinCssInput): string;
8
+ /** 皮肤 CSS 的常量形态(缺省前缀):给只取一段文本的调用方用。 */
9
+ export declare const CHEF_SKIN_CSS: string;
10
+ /** 私家大厨页面样式层的**单一入口**:公共层两层(移动端配方 + 页面级形状件)+ 本件皮肤。
11
+ * 10 个域页壳的 `extraCss` 一律只用它,页壳侧不再各自拼两层(同一件事只留一个落点)。 */
12
+ export declare function chefSceneCss(input?: ChefSkinCssInput): string;
13
+ //# sourceMappingURL=skin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skin.d.ts","sourceRoot":"","sources":["../../src/render/skin.ts"],"names":[],"mappings":"AAyDA,+CAA+C;AAC/C,MAAM,WAAW,gBAAgB;IAC/B,wBAAwB;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,uCAAuC;AACvC,wBAAgB,WAAW,CAAC,KAAK,CAAC,EAAE,gBAAgB,GAAG,MAAM,CA6N5D;AAED,uCAAuC;AACvC,eAAO,MAAM,aAAa,EAAE,MAAsB,CAAC;AAEnD;wDACwD;AACxD,wBAAgB,YAAY,CAAC,KAAK,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAE7D"}
@@ -0,0 +1,282 @@
1
+ /** #873 公共层席 · 私家大厨视觉皮肤(一件):把 48 页的「视觉生动」与「信息层级」两维推上去。
2
+ *
3
+ * 为什么另立一件:48 页此前只有公共层的两层(`pageUiCss` 移动端配方 + `pageShapeCss` 页面级
4
+ * 形状件),两层讲的都是「版面怎么摆正」——没有一条规则给页面**上色**、给区块**立形状**。
5
+ * 于是冻结尺下的读数里视觉生动是全场最低维(均值 13.1/20),评委原话是「整页近乎纯文字、
6
+ * 缺图缺色彩锚点、卡片+灰底为主」;信息层级那一维(17.1)的病根与它同源——「区块之间只靠
7
+ * 文字层级,缺形状件(分隔、分组、图标位)承担层级」。本件就是那层皮肤:**只加形状与色彩,
8
+ * 不动任何区块的标记结构**(区块层是另外 5 个技能包共用的公共层,改标记会波及它们)。
9
+ *
10
+ * 三条口径(逐条与仓库规矩对齐,违反即作废):
11
+ * ① **只用冻结 token 与既有调色板**:11 个冻结 token + `CHART_PALETTE`(唯一定义地=
12
+ * `base-paint` 的 `spec/charts.ts`)。暖色一律取调色板里的值,`rgba()` 派生的浅底色基与某个
13
+ * token/调色板值同源(照 `base-render/src/style.ts` 的 `BLUE_RGB` 先例),不凭空发明色值。
14
+ * ② **全部规则挂在根类 `.ilife-page-ui` 之下**:本件只进私家大厨 10 个域页壳的 `extraCss`,
15
+ * 别的技能页一行都不变。改基础还不行——`buildStyleSheet` 的 `assertExtraCss` 会抛
16
+ * `extra-css-root`/`extra-css-forbidden-token`/`extra-css-dark-scheme`,故本件不出现
17
+ * 基础 token 表的改写、不出现 `--pink`/`--r-xl`、不出现深色区选择器。
18
+ * ③ **圆角只用闭集 `{8, 14, 20, 999}`,断点只用仓内既有集合 `{400, 640, 820, 1001, 1200}`**
19
+ * (出处 `pageUi.ts` 的 `PAGE_LIMITS.breakpointsPx`),不新造取值。
20
+ *
21
+ * 色彩分工(一条规则,避免「不统一」):**暖色=品牌定位**(页顶品牌带、页头浅底、标题横条、
22
+ * 分区标题竖条、读数卡顶条);**蓝=主色**(可点件、结论条、徽章、时间轴);**语义三色**只落在
23
+ * 变更行与状态件上。评委点名的「缺温度」由暖色承担,交互语义一个都没搬家。
24
+ *
25
+ * 谁在用(写得出哪两个在用):私家大厨自己的 10 个域页壳全走 `chefSceneCss()` 这一个入口
26
+ * (8 个 `src/<域>/**` 装配件 + 2 个 `docs/skills/skill-chef/t77*-run-*.mjs` 驱动器)。
27
+ */
28
+ import { CHART_PALETTE, CSS_VAR_TOKENS, pageShapeCss, pageUiCss } from 'base-paint';
29
+ /** 换行(仓库口径:不写字面换行转义,与 `blocks.ts`/`pageShapes.ts` 同)。 */
30
+ const LF = String.fromCharCode(10);
31
+ /** 圆角闭集(与公共层同一条闭集,不新造档位)。 */
32
+ const RADIUS = { sm: 8, md: 14, lg: 20, pill: 999 };
33
+ /** hex → `r, g, b`:本件 `rgba()` 派生浅底的唯一换算位(照 `style.ts` 的 `BLUE_RGB` 先例)。 */
34
+ function rgbOf(hex) {
35
+ const n = Number.parseInt(hex.slice(1), 16);
36
+ return ((n >> 16) & 255) + ', ' + ((n >> 8) & 255) + ', ' + (n & 255);
37
+ }
38
+ /** 色基全部来自冻结 token 与既有调色板:token 走 `CSS_VAR_TOKENS`(值的唯一定义地),
39
+ * 调色板走 `CHART_PALETTE` 的下标(不把十六进制串再抄一遍)。 */
40
+ const BLUE_RGB = rgbOf(CSS_VAR_TOKENS['--blue']);
41
+ const LINE_RGB = rgbOf(CSS_VAR_TOKENS['--line']);
42
+ const OK_RGB = rgbOf(CSS_VAR_TOKENS['--ok']);
43
+ const RED_RGB = rgbOf(CHART_PALETTE[3]);
44
+ const WARM_RGB = rgbOf(CHART_PALETTE[2]);
45
+ const YELLOW_RGB = rgbOf(CHART_PALETTE[6]);
46
+ /** 品牌暖色带:页顶品牌带/标题横条/读数卡顶条共用**同一条**渐变(同一个东西只写一处)。 */
47
+ const BRAND_WARM = 'linear-gradient(90deg, ' + CHART_PALETTE[6] + ', ' + CHART_PALETTE[2]
48
+ + ' 45%, ' + CHART_PALETTE[8] + ')';
49
+ /** 品牌小标记(眉标前那枚圆点):同一族暖色,方向换 135 度。 */
50
+ const BRAND_MARK = 'linear-gradient(135deg, ' + CHART_PALETTE[6] + ', ' + CHART_PALETTE[2]
51
+ + ' 60%, ' + CHART_PALETTE[3] + ')';
52
+ /** 私家大厨视觉皮肤的样式资产唯一产出者。恒返回非空 CSS 文本。 */
53
+ export function chefSkinCss(input) {
54
+ const p = input !== undefined && input !== null
55
+ && typeof input.prefix === 'string' && input.prefix !== '' ? input.prefix : 'ilife-';
56
+ const root = '.' + p + 'page-ui';
57
+ return [
58
+ '/* #873 私家大厨视觉皮肤 · 每一条规则都挂在根类 ' + root + ' 之下 */',
59
+ /* ① 品牌带:整页顶端一条暖色渐变,给「这是私家大厨的页」一个色彩锚点。
60
+ 为什么是暖色:评审反复点「缺温度」;蓝在本页是主色(交互与语义),暖色只做品牌定位。 */
61
+ root + '::before {',
62
+ ' content: "";',
63
+ ' display: block;',
64
+ ' height: 6px;',
65
+ ' background: ' + BRAND_WARM + ';',
66
+ '}',
67
+ /* ② 页头浅底(hero):两团柔光(右上暖、左上主色)+ 一条自上而下的渐隐,页头区因此与正文区
68
+ 有一层「面」的差别,页顶也不再是一块平铺的灰。全用 `radial-gradient`/`linear-gradient`
69
+ 画出来:本件不引外部图、不写惰性加载属性(验收墙会拒收含该属性的产物)。
70
+ 渐隐止于 340px:短页也落在内容里,不会在页面中途切出一条硬边。页底不另加收口带——
71
+ 收口画在 `::after` 上时会跟在内容后头,内容比一屏短就悬在半空的空白里(试过一版,撤了)。 */
72
+ root + ' {',
73
+ ' background-image:',
74
+ ' radial-gradient(620px 210px at 88% -60px, rgba(' + YELLOW_RGB + ', .30),'
75
+ + ' rgba(' + YELLOW_RGB + ', 0) 72%),',
76
+ ' radial-gradient(460px 200px at 2% -50px, rgba(' + BLUE_RGB + ', .12),'
77
+ + ' rgba(' + BLUE_RGB + ', 0) 72%),',
78
+ ' linear-gradient(180deg, rgba(' + WARM_RGB + ', .14), rgba(' + WARM_RGB + ', .07) 140px,'
79
+ + ' rgba(' + BLUE_RGB + ', .04) 260px, rgba(' + BLUE_RGB + ', 0) 360px);',
80
+ '}',
81
+ /* ④ 眉标:品牌位前一枚暖色圆点(图标位),域位改成浅底胶囊(形状件)——
82
+ 眉标此前是一行小字,两段的关系只靠一条 1px 竖线说明。 */
83
+ root + ' .' + p + 'block-page-shell-eyebrow-app {',
84
+ ' display: inline-flex;',
85
+ ' align-items: center;',
86
+ ' gap: 6px;',
87
+ '}',
88
+ root + ' .' + p + 'block-page-shell-eyebrow-app::before {',
89
+ ' content: "";',
90
+ ' flex: 0 0 auto;',
91
+ ' width: 10px;',
92
+ ' height: 10px;',
93
+ ' border-radius: ' + RADIUS.pill + 'px;',
94
+ ' background: ' + BRAND_MARK + ';',
95
+ '}',
96
+ root + ' .' + p + 'block-page-shell-eyebrow > span + span {',
97
+ ' padding: 3px 10px;',
98
+ ' border-left-color: transparent;',
99
+ ' border-radius: ' + RADIUS.pill + 'px;',
100
+ ' background: var(--soft);',
101
+ '}',
102
+ /* ⑤ 标题上方一枚短暖色横条(形状件):页头三级里「这是页名」的视觉锚点,不与正文徽章同规格。 */
103
+ root + ' .' + p + 'block-page-shell-title::before {',
104
+ ' content: "";',
105
+ ' display: block;',
106
+ ' width: 44px;',
107
+ ' height: 4px;',
108
+ ' margin-bottom: 10px;',
109
+ ' border-radius: ' + RADIUS.pill + 'px;',
110
+ ' background: ' + BRAND_WARM + ';',
111
+ '}',
112
+ /* ⑥ 结论条:此前是一张白卡加一条 3px 蓝边,与页里所有卡片同底同形;现在是一条蓝色渐变
113
+ 面板(左缘 4px 主色边 + 一层浅影),层级由「面」承担,不靠加粗字。 */
114
+ root + ' .' + p + 'block-conclusion {',
115
+ ' padding: 14px 16px;',
116
+ ' border-left-width: 4px;',
117
+ ' border-radius: ' + RADIUS.md + 'px;',
118
+ ' background-image: linear-gradient(100deg, rgba(' + BLUE_RGB + ', .14), var(--card) 72%);',
119
+ ' box-shadow: 0 1px 3px rgba(' + BLUE_RGB + ', .10);',
120
+ '}',
121
+ /* ⑦ 事实条:每一格从「一行字」变成一张浅瓦片——「这一页一共几件事」由形状承担,不再靠列距。
122
+ 内距取 6px/10px(在「看得出是瓦片」与「别把首屏吃掉」之间取的小档):事实条在多数页
123
+ 排在一屏最上,瓦片每高一档就把下面整块内容往下推一档。 */
124
+ root + ' .' + p + 'block-fact-strip {',
125
+ ' gap: 8px 10px;',
126
+ '}',
127
+ root + ' .' + p + 'block-fact-strip-item {',
128
+ ' box-sizing: border-box;',
129
+ /* `max-width` 是长值(一整句)的兜底:瓦片不许宽过容器,`-value` 上已有 `overflow-wrap`。 */
130
+ ' max-width: 100%;',
131
+ ' padding: 6px 10px;',
132
+ ' border: 1px solid var(--line);',
133
+ ' border-left: 3px solid rgba(' + BLUE_RGB + ', .55);',
134
+ ' border-radius: ' + RADIUS.md + 'px;',
135
+ ' background: var(--card);',
136
+ '}',
137
+ /* 窄屏**不给**「两格一行」的固定列宽:事实条常常是 3 条(奇数),固定两列必然排出一张孤卡、
138
+ 右侧整格空着(#871 为读数卡记过同一类账),且首屏因此多占一截纵向高度。瓦片按内容宽排、
139
+ `flex-wrap` 自然换行——390 档三条与四条都还排得下一行。 */
140
+ /* ⑧ 分区标题的形状件:每张卡、每个分区的标题前一枚**暖色小方块图标位**(18px,圆角取闭集
141
+ 里的 8)。评审那句「区块之间只靠文字层级,缺形状件(分隔、分组、图标位)承担层级」要销的
142
+ 就是这一条;五枚标题类名共用同一条规则,不逐个各写一遍。
143
+ 图标位是**纯装饰**:`content` 只给空串,字一个都不进 CSS(#733 的账:词不许只活在样式里)。 */
144
+ root + ' .' + p + 'block-kpi-card-title,',
145
+ root + ' .' + p + 'block-copy-block-title,',
146
+ root + ' .' + p + 'block-feedback-block-title,',
147
+ root + ' .' + p + 'block-empty-block-title,',
148
+ root + ' .' + p + 'block-chart-block-title {',
149
+ ' position: relative;',
150
+ ' padding-left: 26px;',
151
+ '}',
152
+ root + ' .' + p + 'block-kpi-card-title::before,',
153
+ root + ' .' + p + 'block-copy-block-title::before,',
154
+ root + ' .' + p + 'block-feedback-block-title::before,',
155
+ root + ' .' + p + 'block-empty-block-title::before,',
156
+ root + ' .' + p + 'block-chart-block-title::before {',
157
+ ' content: "";',
158
+ ' position: absolute;',
159
+ ' left: 0;',
160
+ ' top: 50%;',
161
+ ' width: 18px;',
162
+ ' height: 18px;',
163
+ ' border-radius: ' + RADIUS.sm + 'px;',
164
+ ' background: ' + BRAND_MARK + ';',
165
+ ' transform: translateY(-50%);',
166
+ '}',
167
+ /* 表注(`caption` 是表格件、盒模型与标题不同,不给它绝对定位的图标位)只留一条暖色竖条。 */
168
+ root + ' .' + p + 'block-data-table-caption {',
169
+ ' box-sizing: border-box;',
170
+ ' padding-left: 12px;',
171
+ ' border-left: 3px solid ' + CHART_PALETTE[2] + ';',
172
+ '}',
173
+ /* ⑨ 读数卡:顶缘一条品牌暖色条(每张卡一个色彩锚点),卡面边界也随之从灰线换成暖调。 */
174
+ root + ' .' + p + 'block-kpi-card {',
175
+ ' position: relative;',
176
+ ' overflow: hidden;',
177
+ ' border-color: rgba(' + WARM_RGB + ', .30);',
178
+ '}',
179
+ root + ' .' + p + 'block-kpi-card::before {',
180
+ ' content: "";',
181
+ ' position: absolute;',
182
+ ' top: 0;',
183
+ ' left: 0;',
184
+ ' right: 0;',
185
+ ' height: 3px;',
186
+ ' background: ' + BRAND_WARM + ';',
187
+ '}',
188
+ /* ⑩ 数据表:表卡落一层浅影;列头一行加浅蓝底(列头与数据行从此有「表头带」这条形状),
189
+ 斑马行由中性灰换成极浅蓝,与页头浅底同一族色。 */
190
+ root + ' .' + p + 'block-data-table {',
191
+ ' box-shadow: 0 1px 2px rgba(' + LINE_RGB + ', .50);',
192
+ '}',
193
+ root + ' .' + p + 'block-data-table th {',
194
+ ' background-image: linear-gradient(180deg, rgba(' + BLUE_RGB + ', .09), rgba(' + BLUE_RGB + ', .02));',
195
+ '}',
196
+ root + ' .' + p + 'block-data-table tbody tr:nth-child(even) td {',
197
+ ' background-color: rgba(' + BLUE_RGB + ', .035);',
198
+ '}',
199
+ /* ⑪ 折叠条:卡落浅影、左缘一条暖色条;开合标记从一枚灰色小三角换成圆底图标位
200
+ (形状件 + 图标位;`▸` 那个字形仍由公共层那条规则给,本件只换底盘)。 */
201
+ root + ' .' + p + 'block-disclosure {',
202
+ ' border-left: 3px solid rgba(' + WARM_RGB + ', .45);',
203
+ ' box-shadow: 0 1px 3px rgba(' + LINE_RGB + ', .55);',
204
+ '}',
205
+ root + ' .' + p + 'block-disclosure-summary::before {',
206
+ ' flex: 0 0 auto;',
207
+ ' width: 24px;',
208
+ ' height: 24px;',
209
+ ' margin-right: 10px;',
210
+ ' border-radius: ' + RADIUS.pill + 'px;',
211
+ ' background: var(--soft);',
212
+ ' color: var(--blue2);',
213
+ ' font-size: 12px;',
214
+ ' line-height: 24px;',
215
+ ' text-align: center;',
216
+ '}',
217
+ /* ⑫ 变更行:旧值/新值各带一枚语义浅底胶囊(红=改前、绿=改后)。
218
+ 改前那一行是「灰字 + 删除线」贴着「正文字重 600」,改了什么全靠读字。 */
219
+ root + ' .' + p + 'block-change-row {',
220
+ ' padding: 8px 0;',
221
+ '}',
222
+ root + ' .' + p + 'block-change-row-old {',
223
+ ' padding: 1px 8px;',
224
+ ' border-radius: ' + RADIUS.sm + 'px;',
225
+ ' background-color: rgba(' + RED_RGB + ', .10);',
226
+ '}',
227
+ root + ' .' + p + 'block-change-row-new {',
228
+ ' padding: 1px 8px;',
229
+ ' border-radius: ' + RADIUS.sm + 'px;',
230
+ ' background-color: rgba(' + OK_RGB + ', .16);',
231
+ '}',
232
+ root + ' .' + p + 'block-change-row-arrow {',
233
+ ' color: var(--blue2);',
234
+ '}',
235
+ /* ⑬ 列表行:卡落浅影,左槽(标记位)取主色——此前它与右槽同为灰,整行读起来是一串等重的字。 */
236
+ root + ' .' + p + 'block-list-rows {',
237
+ ' box-shadow: 0 1px 3px rgba(' + LINE_RGB + ', .55);',
238
+ '}',
239
+ root + ' .' + p + 'block-list-rows-left {',
240
+ ' color: var(--blue2);',
241
+ ' font-weight: 600;',
242
+ '}',
243
+ /* ⑭ 时间轴:轴线加粗一档并上主色,圆点带一圈主色光晕(时间与正文的分槽因此看得出来)。 */
244
+ root + ' .' + p + 'block-timeline {',
245
+ ' padding-left: 20px;',
246
+ ' border-left: 2px solid rgba(' + BLUE_RGB + ', .35);',
247
+ '}',
248
+ root + ' .' + p + 'block-timeline-dot {',
249
+ ' left: -27px;',
250
+ ' width: 10px;',
251
+ ' height: 10px;',
252
+ ' border-radius: ' + RADIUS.pill + 'px;',
253
+ ' box-shadow: 0 0 0 3px rgba(' + BLUE_RGB + ', .16);',
254
+ '}',
255
+ /* ⑮ 徽章与页内导航**不改**(试过一版「浅渐变 + 主色描边」,撤了):同一批图上复评时,
256
+ 全批仅有的两页带徽章行与页内导航的样本(06/17)双双掉分——徽章行本来就是一片小胶囊,
257
+ 再加描边与底色只会把它读成「一排按钮」。两处本身已有 `--soft` 底、`--line` 边与主色字,
258
+ 色彩锚点不缺这一处;撤掉的那一版读数记在证据件里。 */
259
+ /* ⑯ 复制区:此前只有标题与按钮悬在页底,现在收进一张卡(形状件),与页里别的卡同一套语言。 */
260
+ root + ' .' + p + 'block-copy-block {',
261
+ ' padding: 14px 14px 16px;',
262
+ ' border: 1px solid var(--line);',
263
+ ' border-radius: ' + RADIUS.md + 'px;',
264
+ ' background: var(--card);',
265
+ ' box-shadow: 0 1px 2px rgba(' + LINE_RGB + ', .45);',
266
+ '}',
267
+ /* ⑰ 主动作按钮:主色渐变 + 一层主色浅影,与页头品牌带呼应(按钮自此是页里最亮的实心件)。
268
+ 只碰动作条的主按钮:`.copy-btn.copied` 那条成功态走同一套属性,本件不覆盖它。 */
269
+ root + ' .' + p + 'action-btn-primary {',
270
+ ' background-image: linear-gradient(180deg, var(--blue), var(--blue2));',
271
+ ' box-shadow: 0 2px 6px rgba(' + BLUE_RGB + ', .28);',
272
+ '}',
273
+ ].join(LF);
274
+ }
275
+ /** 皮肤 CSS 的常量形态(缺省前缀):给只取一段文本的调用方用。 */
276
+ export const CHEF_SKIN_CSS = chefSkinCss();
277
+ /** 私家大厨页面样式层的**单一入口**:公共层两层(移动端配方 + 页面级形状件)+ 本件皮肤。
278
+ * 10 个域页壳的 `extraCss` 一律只用它,页壳侧不再各自拼两层(同一件事只留一个落点)。 */
279
+ export function chefSceneCss(input) {
280
+ return pageUiCss(input) + LF + pageShapeCss(input) + LF + chefSkinCss(input);
281
+ }
282
+ //# sourceMappingURL=skin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skin.js","sourceRoot":"","sources":["../../src/render/skin.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,17 @@
1
1
  /** 搜索筛选能力的路由声明(唤醒词命中哪条命令,声明面唯一一处)。
2
2
  *
3
- * 八行对应 `src/policy/wakewords.ts` 里搜索筛选八句唤醒词:查看全部/搜索食谱/搜菜/查食材/
4
- * 筛选菜系/筛选食材/筛选口味/筛选季节都进 `chef.recipe.search`。`order` 取唤醒词表 1-based
5
- * 下标(12–19),只保证跨域可比;全表级顺序由场景表定,本文件不另立顺序。
6
- * 命令行写法照 `packages/skill-chef/SKILL.md` 同命令示例(空库可跑的那一行)。
3
+ * 十二行对应 `src/policy/wakewords.ts` 里搜索筛选十二句唤醒词:查看全部/搜索食谱/搜菜/查食材/
4
+ * 筛选菜系/筛选食材/筛选口味/筛选季节(#771 落位)+ 筛选难度/筛选时间/筛选炊具/筛选状态
5
+ * (#841 补齐的四条老组名)。`order` 取唤醒词表 1-based 下标,本域不在表内连续:
6
+ * 12–19 是原表里那八句,38–41 是 #841 追加的四句(表尾按域归组,见 `wakewords.ts` 的段注)。
7
+ * 全表级顺序由唤醒词表定,本文件不另立顺序;`order` 是「我在表里第几行」,与表序互为判据
8
+ * (判据住 `t841-登记面对账.mjs`)。
9
+ * 命令行写法照本表各条的槽位示例(空库可跑的那一行)。
10
+ *
11
+ * #771:筛选食材→`ingredient`、筛选口味→`flavor`、筛选季节→`season`(各用显式键,不再经
12
+ * `filter` 绕 `cuisine`);筛选菜系仍走 `filter`(别名落 `cuisine`,与既有测试与 HELP 示例对齐)。
13
+ * #841:追加的四条同理各用显式键(`difficulty`/`time_max`/`cookware`/`status`),经 `filter` 绕道会让
14
+ * 「按炊具筛」打到菜系维度上。
7
15
  */
8
16
  import type { RouteDecl } from '../shared/command-spec.js';
9
17
  /** 搜索筛选能力的路由声明表:恰好导出一个声明数组。 */
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/search/routes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAE3D,+BAA+B;AAC/B,eAAO,MAAM,aAAa,EAAE,SAAS,SAAS,EAiD7C,CAAC"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/search/routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAE3D,+BAA+B;AAC/B,eAAO,MAAM,aAAa,EAAE,SAAS,SAAS,EAyE7C,CAAC"}