@12ui/design 0.2.76 → 0.2.78

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 (337) hide show
  1. package/SKILL.md +1 -1
  2. package/dist/cli-codex-readiness.d.ts +6 -0
  3. package/dist/cli-codex-readiness.d.ts.map +1 -1
  4. package/dist/cli-codex-readiness.js +12 -12
  5. package/dist/cli-codex-readiness.js.map +1 -1
  6. package/dist/cli-help/design.d.ts +2 -2
  7. package/dist/cli-help/design.d.ts.map +1 -1
  8. package/dist/cli-help/design.js +2 -0
  9. package/dist/cli-help/design.js.map +1 -1
  10. package/dist/cli-help/index.d.ts +2 -2
  11. package/dist/cli-review-command.d.ts.map +1 -1
  12. package/dist/cli-review-command.js +2 -0
  13. package/dist/cli-review-command.js.map +1 -1
  14. package/dist/cli-run.d.ts.map +1 -1
  15. package/dist/cli-run.js +6 -0
  16. package/dist/cli-run.js.map +1 -1
  17. package/dist/cli-workspace-draw.d.ts +1 -11
  18. package/dist/cli-workspace-draw.d.ts.map +1 -1
  19. package/dist/cli-workspace-draw.js +18 -18
  20. package/dist/cli-workspace-draw.js.map +1 -1
  21. package/dist/cli-workspace-runner.d.ts +30 -0
  22. package/dist/cli-workspace-runner.d.ts.map +1 -0
  23. package/dist/cli-workspace-runner.js +105 -0
  24. package/dist/cli-workspace-runner.js.map +1 -0
  25. package/dist/mcp-slate-image.js +1 -1
  26. package/dist/mcp-slate-image.js.map +1 -1
  27. package/dist/mcp-slate-tool-defs.js +1 -1
  28. package/dist/mcp-slate-tool-defs.js.map +1 -1
  29. package/dist/mcp-slate-ui-copy.d.ts +403 -33
  30. package/dist/mcp-slate-ui-copy.d.ts.map +1 -1
  31. package/dist/mcp-slate-ui-copy.js +247 -57
  32. package/dist/mcp-slate-ui-copy.js.map +1 -1
  33. package/dist/mcp-slate-ui-icu.d.ts +47 -0
  34. package/dist/mcp-slate-ui-icu.d.ts.map +1 -0
  35. package/dist/mcp-slate-ui-icu.js +229 -0
  36. package/dist/mcp-slate-ui-icu.js.map +1 -0
  37. package/dist/mcp-slate-ui-locale-match.d.ts +12 -0
  38. package/dist/mcp-slate-ui-locale-match.d.ts.map +1 -0
  39. package/dist/mcp-slate-ui-locale-match.js +34 -0
  40. package/dist/mcp-slate-ui-locale-match.js.map +1 -0
  41. package/dist/mcp-slate-ui-locales/de-DE.d.ts +9 -0
  42. package/dist/mcp-slate-ui-locales/de-DE.d.ts.map +1 -0
  43. package/dist/mcp-slate-ui-locales/de-DE.js +217 -0
  44. package/dist/mcp-slate-ui-locales/de-DE.js.map +1 -0
  45. package/dist/mcp-slate-ui-locales/es-419.d.ts +9 -0
  46. package/dist/mcp-slate-ui-locales/es-419.d.ts.map +1 -0
  47. package/dist/mcp-slate-ui-locales/es-419.js +217 -0
  48. package/dist/mcp-slate-ui-locales/es-419.js.map +1 -0
  49. package/dist/mcp-slate-ui-locales/es-ES.d.ts +9 -0
  50. package/dist/mcp-slate-ui-locales/es-ES.d.ts.map +1 -0
  51. package/dist/mcp-slate-ui-locales/es-ES.js +217 -0
  52. package/dist/mcp-slate-ui-locales/es-ES.js.map +1 -0
  53. package/dist/mcp-slate-ui-locales/fr-FR.d.ts +9 -0
  54. package/dist/mcp-slate-ui-locales/fr-FR.d.ts.map +1 -0
  55. package/dist/mcp-slate-ui-locales/fr-FR.js +217 -0
  56. package/dist/mcp-slate-ui-locales/fr-FR.js.map +1 -0
  57. package/dist/mcp-slate-ui-locales/hi-IN.d.ts +9 -0
  58. package/dist/mcp-slate-ui-locales/hi-IN.d.ts.map +1 -0
  59. package/dist/mcp-slate-ui-locales/hi-IN.js +217 -0
  60. package/dist/mcp-slate-ui-locales/hi-IN.js.map +1 -0
  61. package/dist/mcp-slate-ui-locales/index.d.ts +11 -0
  62. package/dist/mcp-slate-ui-locales/index.d.ts.map +1 -0
  63. package/dist/mcp-slate-ui-locales/index.js +34 -0
  64. package/dist/mcp-slate-ui-locales/index.js.map +1 -0
  65. package/dist/mcp-slate-ui-locales/it-IT.d.ts +9 -0
  66. package/dist/mcp-slate-ui-locales/it-IT.d.ts.map +1 -0
  67. package/dist/mcp-slate-ui-locales/it-IT.js +217 -0
  68. package/dist/mcp-slate-ui-locales/it-IT.js.map +1 -0
  69. package/dist/mcp-slate-ui-locales/ja-JP.d.ts +9 -0
  70. package/dist/mcp-slate-ui-locales/ja-JP.d.ts.map +1 -0
  71. package/dist/mcp-slate-ui-locales/ja-JP.js +217 -0
  72. package/dist/mcp-slate-ui-locales/ja-JP.js.map +1 -0
  73. package/dist/mcp-slate-ui-locales/ko-KR.d.ts +9 -0
  74. package/dist/mcp-slate-ui-locales/ko-KR.d.ts.map +1 -0
  75. package/dist/mcp-slate-ui-locales/ko-KR.js +217 -0
  76. package/dist/mcp-slate-ui-locales/ko-KR.js.map +1 -0
  77. package/dist/mcp-slate-ui-locales/pt-BR.d.ts +9 -0
  78. package/dist/mcp-slate-ui-locales/pt-BR.d.ts.map +1 -0
  79. package/dist/mcp-slate-ui-locales/pt-BR.js +217 -0
  80. package/dist/mcp-slate-ui-locales/pt-BR.js.map +1 -0
  81. package/dist/mcp-slate-ui-locales/zh-CN.d.ts +9 -0
  82. package/dist/mcp-slate-ui-locales/zh-CN.d.ts.map +1 -0
  83. package/dist/mcp-slate-ui-locales/zh-CN.js +217 -0
  84. package/dist/mcp-slate-ui-locales/zh-CN.js.map +1 -0
  85. package/dist/mcp-slate-ui-locales/zh-TW.d.ts +9 -0
  86. package/dist/mcp-slate-ui-locales/zh-TW.d.ts.map +1 -0
  87. package/dist/mcp-slate-ui-locales/zh-TW.js +217 -0
  88. package/dist/mcp-slate-ui-locales/zh-TW.js.map +1 -0
  89. package/dist/mcp-slate-ui-script-bridge.d.ts.map +1 -1
  90. package/dist/mcp-slate-ui-script-bridge.js +8 -9
  91. package/dist/mcp-slate-ui-script-bridge.js.map +1 -1
  92. package/dist/mcp-slate-ui-script-dialog.d.ts.map +1 -1
  93. package/dist/mcp-slate-ui-script-dialog.js +60 -30
  94. package/dist/mcp-slate-ui-script-dialog.js.map +1 -1
  95. package/dist/mcp-slate-ui-script-inline.d.ts +9 -6
  96. package/dist/mcp-slate-ui-script-inline.d.ts.map +1 -1
  97. package/dist/mcp-slate-ui-script-inline.js +91 -46
  98. package/dist/mcp-slate-ui-script-inline.js.map +1 -1
  99. package/dist/mcp-slate-ui-script-inspiration-collage.d.ts +20 -0
  100. package/dist/mcp-slate-ui-script-inspiration-collage.d.ts.map +1 -0
  101. package/dist/mcp-slate-ui-script-inspiration-collage.js +68 -0
  102. package/dist/mcp-slate-ui-script-inspiration-collage.js.map +1 -0
  103. package/dist/mcp-slate-ui-script-inspiration-grid.d.ts +26 -0
  104. package/dist/mcp-slate-ui-script-inspiration-grid.d.ts.map +1 -0
  105. package/dist/mcp-slate-ui-script-inspiration-grid.js +246 -0
  106. package/dist/mcp-slate-ui-script-inspiration-grid.js.map +1 -0
  107. package/dist/mcp-slate-ui-script-inspiration.d.ts +10 -9
  108. package/dist/mcp-slate-ui-script-inspiration.d.ts.map +1 -1
  109. package/dist/mcp-slate-ui-script-inspiration.js +161 -120
  110. package/dist/mcp-slate-ui-script-inspiration.js.map +1 -1
  111. package/dist/mcp-slate-ui-script-l10n.d.ts +29 -0
  112. package/dist/mcp-slate-ui-script-l10n.d.ts.map +1 -0
  113. package/dist/mcp-slate-ui-script-l10n.js +135 -0
  114. package/dist/mcp-slate-ui-script-l10n.js.map +1 -0
  115. package/dist/mcp-slate-ui-script-more.d.ts +3 -2
  116. package/dist/mcp-slate-ui-script-more.d.ts.map +1 -1
  117. package/dist/mcp-slate-ui-script-more.js +19 -18
  118. package/dist/mcp-slate-ui-script-more.js.map +1 -1
  119. package/dist/mcp-slate-ui-script-pause.d.ts +33 -0
  120. package/dist/mcp-slate-ui-script-pause.d.ts.map +1 -0
  121. package/dist/mcp-slate-ui-script-pause.js +217 -0
  122. package/dist/mcp-slate-ui-script-pause.js.map +1 -0
  123. package/dist/mcp-slate-ui-script-remote.d.ts +2 -0
  124. package/dist/mcp-slate-ui-script-remote.d.ts.map +1 -1
  125. package/dist/mcp-slate-ui-script-remote.js +47 -6
  126. package/dist/mcp-slate-ui-script-remote.js.map +1 -1
  127. package/dist/mcp-slate-ui-script-scribble.js +1 -1
  128. package/dist/mcp-slate-ui-script-select.js +6 -6
  129. package/dist/mcp-slate-ui-script-stage.d.ts +3 -2
  130. package/dist/mcp-slate-ui-script-stage.d.ts.map +1 -1
  131. package/dist/mcp-slate-ui-script-stage.js +31 -19
  132. package/dist/mcp-slate-ui-script-stage.js.map +1 -1
  133. package/dist/mcp-slate-ui-script-state.d.ts.map +1 -1
  134. package/dist/mcp-slate-ui-script-state.js +77 -57
  135. package/dist/mcp-slate-ui-script-state.js.map +1 -1
  136. package/dist/mcp-slate-ui-script.d.ts +2 -2
  137. package/dist/mcp-slate-ui-script.d.ts.map +1 -1
  138. package/dist/mcp-slate-ui-script.js +21 -7
  139. package/dist/mcp-slate-ui-script.js.map +1 -1
  140. package/dist/mcp-slate-ui-styles-dialog.d.ts +6 -7
  141. package/dist/mcp-slate-ui-styles-dialog.d.ts.map +1 -1
  142. package/dist/mcp-slate-ui-styles-dialog.js +13 -29
  143. package/dist/mcp-slate-ui-styles-dialog.js.map +1 -1
  144. package/dist/mcp-slate-ui-styles-inspiration.d.ts +18 -0
  145. package/dist/mcp-slate-ui-styles-inspiration.d.ts.map +1 -0
  146. package/dist/mcp-slate-ui-styles-inspiration.js +43 -0
  147. package/dist/mcp-slate-ui-styles-inspiration.js.map +1 -0
  148. package/dist/mcp-slate-ui-styles-pause.d.ts +10 -0
  149. package/dist/mcp-slate-ui-styles-pause.d.ts.map +1 -0
  150. package/dist/mcp-slate-ui-styles-pause.js +25 -0
  151. package/dist/mcp-slate-ui-styles-pause.js.map +1 -0
  152. package/dist/mcp-slate-ui-styles-stage.d.ts +10 -6
  153. package/dist/mcp-slate-ui-styles-stage.d.ts.map +1 -1
  154. package/dist/mcp-slate-ui-styles-stage.js +24 -16
  155. package/dist/mcp-slate-ui-styles-stage.js.map +1 -1
  156. package/dist/mcp-slate-ui-styles.d.ts +12 -5
  157. package/dist/mcp-slate-ui-styles.d.ts.map +1 -1
  158. package/dist/mcp-slate-ui-styles.js +38 -21
  159. package/dist/mcp-slate-ui-styles.js.map +1 -1
  160. package/dist/mcp-slate-ui.d.ts +11 -3
  161. package/dist/mcp-slate-ui.d.ts.map +1 -1
  162. package/dist/mcp-slate-ui.js +24 -16
  163. package/dist/mcp-slate-ui.js.map +1 -1
  164. package/dist/mosaic-bands.d.ts +44 -0
  165. package/dist/mosaic-bands.d.ts.map +1 -0
  166. package/dist/mosaic-bands.js +153 -0
  167. package/dist/mosaic-bands.js.map +1 -0
  168. package/dist/review-discovery.d.ts.map +1 -1
  169. package/dist/review-discovery.js +36 -54
  170. package/dist/review-discovery.js.map +1 -1
  171. package/dist/review-page.d.ts.map +1 -1
  172. package/dist/review-page.js +2 -1
  173. package/dist/review-page.js.map +1 -1
  174. package/dist/review-run-roots.d.ts +40 -0
  175. package/dist/review-run-roots.d.ts.map +1 -0
  176. package/dist/review-run-roots.js +94 -0
  177. package/dist/review-run-roots.js.map +1 -0
  178. package/dist/review-server.d.ts +2 -0
  179. package/dist/review-server.d.ts.map +1 -1
  180. package/dist/review-server.js +2 -0
  181. package/dist/review-server.js.map +1 -1
  182. package/dist/review-types.d.ts +10 -0
  183. package/dist/review-types.d.ts.map +1 -1
  184. package/dist/slate-actions.d.ts +3 -3
  185. package/dist/slate-actions.d.ts.map +1 -1
  186. package/dist/slate-actions.js +9 -8
  187. package/dist/slate-actions.js.map +1 -1
  188. package/dist/slate-browser-host-script.d.ts +4 -0
  189. package/dist/slate-browser-host-script.d.ts.map +1 -1
  190. package/dist/slate-browser-host-script.js +25 -6
  191. package/dist/slate-browser-host-script.js.map +1 -1
  192. package/dist/slate-browser-host.d.ts +2 -1
  193. package/dist/slate-browser-host.d.ts.map +1 -1
  194. package/dist/slate-browser-host.js +18 -5
  195. package/dist/slate-browser-host.js.map +1 -1
  196. package/dist/slate-commit.js +7 -7
  197. package/dist/slate-commit.js.map +1 -1
  198. package/dist/slate-corpus.d.ts.map +1 -1
  199. package/dist/slate-corpus.js +3 -2
  200. package/dist/slate-corpus.js.map +1 -1
  201. package/dist/slate-edit-runner.d.ts.map +1 -1
  202. package/dist/slate-edit-runner.js +5 -4
  203. package/dist/slate-edit-runner.js.map +1 -1
  204. package/dist/slate-editability.d.ts +2 -0
  205. package/dist/slate-editability.d.ts.map +1 -1
  206. package/dist/slate-editability.js +1 -1
  207. package/dist/slate-editability.js.map +1 -1
  208. package/dist/slate-errors.d.ts +7 -1
  209. package/dist/slate-errors.d.ts.map +1 -1
  210. package/dist/slate-errors.js +3 -2
  211. package/dist/slate-errors.js.map +1 -1
  212. package/dist/slate-handoff-options.d.ts +2 -1
  213. package/dist/slate-handoff-options.d.ts.map +1 -1
  214. package/dist/slate-handoff-options.js +2 -2
  215. package/dist/slate-handoff-options.js.map +1 -1
  216. package/dist/slate-handoff.js +1 -1
  217. package/dist/slate-handoff.js.map +1 -1
  218. package/dist/slate-image-executor.d.ts +28 -3
  219. package/dist/slate-image-executor.d.ts.map +1 -1
  220. package/dist/slate-image-executor.js +55 -11
  221. package/dist/slate-image-executor.js.map +1 -1
  222. package/dist/slate-inspiration.js +2 -2
  223. package/dist/slate-inspiration.js.map +1 -1
  224. package/dist/slate-local-image.d.ts.map +1 -1
  225. package/dist/slate-local-image.js +4 -1
  226. package/dist/slate-local-image.js.map +1 -1
  227. package/dist/slate-lock.js +1 -1
  228. package/dist/slate-lock.js.map +1 -1
  229. package/dist/slate-resume.js +6 -6
  230. package/dist/slate-resume.js.map +1 -1
  231. package/dist/slate-round-params.d.ts +3 -0
  232. package/dist/slate-round-params.d.ts.map +1 -1
  233. package/dist/slate-round-params.js +5 -0
  234. package/dist/slate-round-params.js.map +1 -1
  235. package/dist/slate-round-prompt.d.ts +15 -3
  236. package/dist/slate-round-prompt.d.ts.map +1 -1
  237. package/dist/slate-round-prompt.js +14 -5
  238. package/dist/slate-round-prompt.js.map +1 -1
  239. package/dist/slate-round-queries.d.ts +18 -0
  240. package/dist/slate-round-queries.d.ts.map +1 -0
  241. package/dist/slate-round-queries.js +29 -0
  242. package/dist/slate-round-queries.js.map +1 -0
  243. package/dist/slate-round-runner.d.ts.map +1 -1
  244. package/dist/slate-round-runner.js +12 -9
  245. package/dist/slate-round-runner.js.map +1 -1
  246. package/dist/slate-round-search.js +5 -5
  247. package/dist/slate-round-search.js.map +1 -1
  248. package/dist/slate-run-action.d.ts.map +1 -1
  249. package/dist/slate-run-action.js +2 -1
  250. package/dist/slate-run-action.js.map +1 -1
  251. package/dist/slate-runner-context.d.ts +3 -1
  252. package/dist/slate-runner-context.d.ts.map +1 -1
  253. package/dist/slate-runner-context.js +4 -3
  254. package/dist/slate-runner-context.js.map +1 -1
  255. package/dist/slate-runner-failure.d.ts +7 -1
  256. package/dist/slate-runner-failure.d.ts.map +1 -1
  257. package/dist/slate-runner-failure.js +6 -5
  258. package/dist/slate-runner-failure.js.map +1 -1
  259. package/dist/slate-runtime.d.ts.map +1 -1
  260. package/dist/slate-runtime.js +1 -0
  261. package/dist/slate-runtime.js.map +1 -1
  262. package/dist/slate-versions.js +3 -3
  263. package/dist/slate-versions.js.map +1 -1
  264. package/dist/slate-view-contract.d.ts +62 -1
  265. package/dist/slate-view-contract.d.ts.map +1 -1
  266. package/dist/slate-view-contract.js +30 -0
  267. package/dist/slate-view-contract.js.map +1 -1
  268. package/dist/slate-view.d.ts.map +1 -1
  269. package/dist/slate-view.js +19 -3
  270. package/dist/slate-view.js.map +1 -1
  271. package/dist/slate-workspace-parse.d.ts.map +1 -1
  272. package/dist/slate-workspace-parse.js +22 -0
  273. package/dist/slate-workspace-parse.js.map +1 -1
  274. package/dist/slate-workspace-types.d.ts +3 -1
  275. package/dist/slate-workspace-types.d.ts.map +1 -1
  276. package/dist/workspace-draw-client.d.ts +58 -5
  277. package/dist/workspace-draw-client.d.ts.map +1 -1
  278. package/dist/workspace-draw-client.js +82 -9
  279. package/dist/workspace-draw-client.js.map +1 -1
  280. package/dist/workspace-draw-codex.d.ts +9 -4
  281. package/dist/workspace-draw-codex.d.ts.map +1 -1
  282. package/dist/workspace-draw-codex.js +17 -3
  283. package/dist/workspace-draw-codex.js.map +1 -1
  284. package/dist/workspace-draw-messages.d.ts +31 -0
  285. package/dist/workspace-draw-messages.d.ts.map +1 -1
  286. package/dist/workspace-draw-messages.js +30 -0
  287. package/dist/workspace-draw-messages.js.map +1 -1
  288. package/dist/workspace-draw-run.d.ts +19 -1
  289. package/dist/workspace-draw-run.d.ts.map +1 -1
  290. package/dist/workspace-draw-run.js +98 -5
  291. package/dist/workspace-draw-run.js.map +1 -1
  292. package/dist/workspace-draw-store.d.ts +2 -0
  293. package/dist/workspace-draw-store.d.ts.map +1 -1
  294. package/dist/workspace-draw-store.js +3 -1
  295. package/dist/workspace-draw-store.js.map +1 -1
  296. package/dist/workspace-draw-types.d.ts +2 -0
  297. package/dist/workspace-draw-types.d.ts.map +1 -1
  298. package/dist/workspace-draw-types.js +2 -0
  299. package/dist/workspace-draw-types.js.map +1 -1
  300. package/dist/workspace-origin.d.ts +15 -0
  301. package/dist/workspace-origin.d.ts.map +1 -0
  302. package/dist/workspace-origin.js +36 -0
  303. package/dist/workspace-origin.js.map +1 -0
  304. package/dist/workspace-runner-children.d.ts +39 -0
  305. package/dist/workspace-runner-children.d.ts.map +1 -0
  306. package/dist/workspace-runner-children.js +139 -0
  307. package/dist/workspace-runner-children.js.map +1 -0
  308. package/dist/workspace-runner-client.d.ts +43 -0
  309. package/dist/workspace-runner-client.d.ts.map +1 -0
  310. package/dist/workspace-runner-client.js +72 -0
  311. package/dist/workspace-runner-client.js.map +1 -0
  312. package/dist/workspace-runner-main.d.ts +56 -0
  313. package/dist/workspace-runner-main.d.ts.map +1 -0
  314. package/dist/workspace-runner-main.js +378 -0
  315. package/dist/workspace-runner-main.js.map +1 -0
  316. package/dist/workspace-runner-policy.d.ts +40 -0
  317. package/dist/workspace-runner-policy.d.ts.map +1 -0
  318. package/dist/workspace-runner-policy.js +47 -0
  319. package/dist/workspace-runner-policy.js.map +1 -0
  320. package/dist/workspace-runner-spawn.d.ts +42 -0
  321. package/dist/workspace-runner-spawn.d.ts.map +1 -0
  322. package/dist/workspace-runner-spawn.js +60 -0
  323. package/dist/workspace-runner-spawn.js.map +1 -0
  324. package/dist/workspace-runner-stop.d.ts +25 -0
  325. package/dist/workspace-runner-stop.d.ts.map +1 -0
  326. package/dist/workspace-runner-stop.js +44 -0
  327. package/dist/workspace-runner-stop.js.map +1 -0
  328. package/dist/workspace-runner-store.d.ts +26 -0
  329. package/dist/workspace-runner-store.d.ts.map +1 -0
  330. package/dist/workspace-runner-store.js +114 -0
  331. package/dist/workspace-runner-store.js.map +1 -0
  332. package/open-design.json +2 -2
  333. package/package.json +1 -1
  334. package/runtime/codex-conversion/src/images/native-frame.mjs +103 -0
  335. package/runtime/codex-conversion/src/images/native-invoke.mjs +24 -5
  336. package/runtime/codex-conversion/src/images/native.mjs +14 -5
  337. package/runtime/codex-conversion/src/run-store.mjs +21 -1
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-slate-ui-script.js","sourceRoot":"","sources":["../src/mcp-slate-ui-script.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,iCAAiC,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvN,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAuBhE,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;CAY3B,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAAqB,EAAU,EAAE,CAAC;IACnE,eAAe;IACf,gBAAgB;IAChB,eAAe;SACZ,OAAO,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;SAC1D,OAAO,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;SACxD,OAAO,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;SACnD,OAAO,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC;QAC3C,OAAO,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,qBAAqB;QACnF,YAAY,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,0BAA0B;QAClG,QAAQ,EAAE,uBAAuB;KAClC,CAAC,CAAC;IACL,cAAc;IACd,iBAAiB;IACjB,eAAe;IACf,eAAe;IACf,oBAAoB;IACpB,cAAc;IACd,eAAe;IACf,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAC1E,iBAAiB;IACjB,eAAe;IACf,gBAAgB;IAChB,SAAS;IACT,OAAO;CACR,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,CAAC,MAAM,eAAe,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC"}
1
+ {"version":3,"file":"mcp-slate-ui-script.js","sourceRoot":"","sources":["../src/mcp-slate-ui-script.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,8BAA8B,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,qCAAqC,EAAE,MAAM,wBAAwB,CAAC;AACzO,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,2BAA2B,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAuBhE;;;GAGG;AACH,MAAM,cAAc,GAAG,GAA2C,EAAE;IAClE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAS,uBAAuB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC;IAC3F,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC;QAClF,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;KACxF,CAAC,CAAC,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;CAY3B,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAAqB,EAAU,EAAE,CAAC;IACnE,eAAe;IACf,gBAAgB;IAChB,eAAe;SACZ,OAAO,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;SAC1D,OAAO,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;SACnD,OAAO,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC;QAC3C,OAAO,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,qBAAqB;QACnF,eAAe,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,8BAA8B;QAC7G,QAAQ,EAAE,uBAAuB;KAClC,CAAC,CAAC;IACL,cAAc;IACd,gBAAgB,CAAC,cAAc,EAAE,CAAC;IAClC,iBAAiB;IACjB,eAAe;IACf,eAAe;IACf,oBAAoB;IACpB,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB;IACxD,cAAc;IACd,eAAe,CAAC,OAAO,CAAC,2BAA2B,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;IACvG,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAC1E,iBAAiB;IACjB,eAAe;IACf,gBAAgB;IAChB,SAAS;IACT,OAAO;CACR,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,CAAC,MAAM,eAAe,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC"}
@@ -1,16 +1,15 @@
1
1
  /**
2
- * The dialogs (Edit, Branch, Convert), the scribble layer of Edit and the
3
- * Inspiration tab. A dialog is a centred box over a dimmed workspace; it
4
- * scrolls inside itself when the window is short, and fills the width on a
5
- * phone. The reference tiles are square and fluid: at least 192 px across in
6
- * the card and 256 px in the workspace (--ref-min), two across under 420 px.
2
+ * The dialogs (Edit, Branch, Convert), the scribble layer of Edit and, at the
3
+ * end, the Inspiration tab (mcp-slate-ui-styles-inspiration.ts). A dialog is a
4
+ * centred box over a dimmed workspace; it scrolls inside itself when the window
5
+ * is short, and fills the width on a phone.
7
6
  */
8
7
  export declare const SLATE_UI_DIALOG_STYLES: string;
9
8
  /**
10
9
  * The Generate more tile and its panel. The tile is quiet but findable: a
11
10
  * dashed border in the secondary text colour, a plus and the words "Generate
12
- * more", no fill; it takes the size of the thumbnails around it (--thumb-card
13
- * beside the card's strip, --thumb-rail in the selection). The panel is one bordered block under the thumbnails:
11
+ * more", no fill; it is one more tile of the thumbnails' grid (the card's strip, and in the selection a row of the
12
+ * same columns), as wide as a column and with the newest round's ratio. The panel is one bordered block under the thumbnails:
14
13
  * heading, one helper line, the "Based on" switch, the selected inspiration as
15
14
  * small chips, a note, the count and the two buttons. In the card, the script
16
15
  * shortens the large image by the panel's height while it is open (an inline
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-slate-ui-styles-dialog.d.ts","sourceRoot":"","sources":["../src/mcp-slate-ui-styles-dialog.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,QAoClC,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,QAuChC,CAAC"}
1
+ {"version":3,"file":"mcp-slate-ui-styles-dialog.d.ts","sourceRoot":"","sources":["../src/mcp-slate-ui-styles-dialog.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,QAqBJ,CAAC;AAEhC;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,QAsChC,CAAC"}
@@ -1,9 +1,9 @@
1
+ import { SLATE_UI_INSPIRATION_STYLES } from './mcp-slate-ui-styles-inspiration.js';
1
2
  /**
2
- * The dialogs (Edit, Branch, Convert), the scribble layer of Edit and the
3
- * Inspiration tab. A dialog is a centred box over a dimmed workspace; it
4
- * scrolls inside itself when the window is short, and fills the width on a
5
- * phone. The reference tiles are square and fluid: at least 192 px across in
6
- * the card and 256 px in the workspace (--ref-min), two across under 420 px.
3
+ * The dialogs (Edit, Branch, Convert), the scribble layer of Edit and, at the
4
+ * end, the Inspiration tab (mcp-slate-ui-styles-inspiration.ts). A dialog is a
5
+ * centred box over a dimmed workspace; it scrolls inside itself when the window
6
+ * is short, and fills the width on a phone.
7
7
  */
8
8
  export const SLATE_UI_DIALOG_STYLES = String.raw `
9
9
  .modal { position: fixed; inset: 0; z-index: 20; display: grid; place-items: center; padding: 16px; background: rgba(0, 0, 0, .45); overflow: auto; }
@@ -26,27 +26,12 @@ export const SLATE_UI_DIALOG_STYLES = String.raw `
26
26
  .imgwrap { position: relative; width: min(100%, calc(60vh * var(--ar, 1.5))); aspect-ratio: var(--ar, 1.5); margin: 0 auto; min-width: 0; border-radius: var(--radius); background: var(--bg3); overflow: hidden; touch-action: none; }
27
27
  .stageimg { display: block; width: 100%; height: 100%; object-fit: fill; user-select: none; -webkit-user-drag: none; }
28
28
  .scribble { position: absolute; inset: 0; width: 100%; height: 100%; cursor: crosshair; touch-action: none; }
29
- .searchrow { display: flex; gap: 8px; min-width: 0; }
30
- .searchrow .query { flex: 1 1 0; min-width: 0; }
31
- .insp { container-type: inline-size; }
32
- .insp.card { --ref-min: 192px; }
33
- .insp.stage { --ref-min: 256px; }
34
- .results { display: flex; flex-direction: column; gap: 16px; margin-top: 12px; }
35
- .refhead { margin: 0 0 6px; font-size: 13px; font-weight: 600; }
36
- .refgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(var(--ref-min), 1fr)); gap: 8px; }
37
- @container (max-width: 419px) { .refgrid { grid-template-columns: repeat(2, 1fr); } }
38
- .refbtn, .skeleton { width: 100%; aspect-ratio: 1; }
39
- .skeleton { border-radius: 6px; background: var(--bg2); }
40
- .refbtn[aria-pressed="true"] { box-shadow: 0 0 0 2px var(--text); }
41
- .check { position: absolute; top: 6px; right: 6px; display: none; place-items: center; width: 20px; height: 20px; border-radius: 50%; background: var(--inverse); color: var(--inverse-text); }
42
- .refbtn[aria-pressed="true"] .check { display: grid; }
43
- .placeholder { display: grid; place-items: center; min-height: 160px; border: 1px dashed var(--border); border-radius: var(--radius); color: var(--text2); padding: 16px; text-align: center; }
44
- `;
29
+ ${SLATE_UI_INSPIRATION_STYLES}`;
45
30
  /**
46
31
  * The Generate more tile and its panel. The tile is quiet but findable: a
47
32
  * dashed border in the secondary text colour, a plus and the words "Generate
48
- * more", no fill; it takes the size of the thumbnails around it (--thumb-card
49
- * beside the card's strip, --thumb-rail in the selection). The panel is one bordered block under the thumbnails:
33
+ * more", no fill; it is one more tile of the thumbnails' grid (the card's strip, and in the selection a row of the
34
+ * same columns), as wide as a column and with the newest round's ratio. The panel is one bordered block under the thumbnails:
50
35
  * heading, one helper line, the "Based on" switch, the selected inspiration as
51
36
  * small chips, a note, the count and the two buttons. In the card, the script
52
37
  * shortens the large image by the panel's height while it is open (an inline
@@ -56,8 +41,7 @@ export const SLATE_UI_MORE_STYLES = String.raw `
56
41
  button.moretile { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; flex: none; padding: 0; border: 1px dashed var(--text2); border-radius: 6px; background: none; color: var(--text2); font-size: 12px; font-weight: 500; line-height: 1.2; }
57
42
  button.moretile:hover:not(:disabled), button.moretile[aria-expanded="true"] { color: var(--text); border-color: var(--text); }
58
43
  button.moretile:disabled { opacity: .35; }
59
- .stripwrap .moretile { width: var(--thumb-card); height: var(--thumb-card); }
60
- .rail .moretile { width: var(--thumb-rail); height: var(--thumb-rail); }
44
+ .strip .moretile, .rail .moretile { width: 100%; aspect-ratio: var(--ar, 1.5); align-self: start; }
61
45
  .morepanel { display: flex; flex-direction: column; gap: 10px; min-width: 0; padding: 12px; border: 1px solid var(--border); border-radius: var(--radius); }
62
46
  #more:not(:empty) { padding-top: 10px; }
63
47
  #card .hero.folded { display: none; }
@@ -80,13 +64,13 @@ export const SLATE_UI_MORE_STYLES = String.raw `
80
64
  .morepanel textarea { width: 100%; min-width: 0; padding: 8px 10px; font: inherit; color: var(--text); background: var(--bg); border: 1px solid var(--border); border-radius: var(--radius); resize: vertical; }
81
65
  .morepanel textarea:focus-visible { outline: 2px solid var(--ring); outline-offset: 1px; }
82
66
  .morerow { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; min-width: 0; }
83
- .morebtns { display: flex; gap: 8px; margin-left: auto; }
84
- .morerow button { padding: 8px 10px; }
67
+ .morebtns { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; min-width: 0; margin-left: auto; }
68
+ .morerow button { min-width: 0; max-width: 100%; padding: 8px 10px; overflow-wrap: anywhere; }
85
69
  .seg { display: flex; flex: 1 1 auto; min-width: 0; max-width: 260px; border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; }
86
70
  .morehost .seg { max-width: none; flex-basis: 100%; }
87
- .segopt { position: relative; display: block; flex: 1 1 0; min-width: 28px; }
71
+ .segopt { position: relative; display: block; flex: 1 1 0; min-width: 22px; }
88
72
  .segopt input { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: pointer; }
89
- .segopt span { display: block; padding: 7px 4px; text-align: center; font-weight: 600; }
73
+ .segopt span { display: block; padding: 7px 2px; text-align: center; font-weight: 600; }
90
74
  .segopt input:checked + span { background: var(--inverse); color: var(--inverse-text); }
91
75
  .segopt input:focus-visible + span { outline: 2px solid var(--ring); outline-offset: -2px; }
92
76
  .morepanel .alert { margin: 0; }
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-slate-ui-styles-dialog.js","sourceRoot":"","sources":["../src/mcp-slate-ui-styles-dialog.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoC/C,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuC7C,CAAC"}
1
+ {"version":3,"file":"mcp-slate-ui-styles-dialog.js","sourceRoot":"","sources":["../src/mcp-slate-ui-styles-dialog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AAEnF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;EAqB9C,2BAA2B,EAAE,CAAC;AAEhC;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsC7C,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * The Inspiration tab. The reference tiles are a collage: the script places each
3
+ * tile at its picture's own aspect ratio in bands as wide as the grid
4
+ * (`mcp-slate-ui-script-inspiration-collage.ts` holds the sizes), so the grid is
5
+ * a positioned box and its tiles are absolute; the picture fills its tile (the
6
+ * `.thumb` rule contains it, so a recorded ratio that is off shows the whole
7
+ * picture). A reference a round used carries a badge at its lower left and
8
+ * a ring in the accent colour inside its edge; a selected one keeps the outer
9
+ * ring and the check at its upper right, so the two read apart when a tile is
10
+ * both.
11
+ *
12
+ * In the card the results scroll inside themselves (the host grows the frame
13
+ * and never scrolls the thread, so a long page would push the card out of
14
+ * sight); Generate sits under them. In the workspace the page scrolls and
15
+ * Generate sticks to the bottom of the window.
16
+ */
17
+ export declare const SLATE_UI_INSPIRATION_STYLES: string;
18
+ //# sourceMappingURL=mcp-slate-ui-styles-inspiration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-slate-ui-styles-inspiration.d.ts","sourceRoot":"","sources":["../src/mcp-slate-ui-styles-inspiration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,2BAA2B,QAyBvC,CAAC"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * The Inspiration tab. The reference tiles are a collage: the script places each
3
+ * tile at its picture's own aspect ratio in bands as wide as the grid
4
+ * (`mcp-slate-ui-script-inspiration-collage.ts` holds the sizes), so the grid is
5
+ * a positioned box and its tiles are absolute; the picture fills its tile (the
6
+ * `.thumb` rule contains it, so a recorded ratio that is off shows the whole
7
+ * picture). A reference a round used carries a badge at its lower left and
8
+ * a ring in the accent colour inside its edge; a selected one keeps the outer
9
+ * ring and the check at its upper right, so the two read apart when a tile is
10
+ * both.
11
+ *
12
+ * In the card the results scroll inside themselves (the host grows the frame
13
+ * and never scrolls the thread, so a long page would push the card out of
14
+ * sight); Generate sits under them. In the workspace the page scrolls and
15
+ * Generate sticks to the bottom of the window.
16
+ */
17
+ export const SLATE_UI_INSPIRATION_STYLES = String.raw `
18
+ .searchrow { display: flex; gap: 8px; min-width: 0; }
19
+ .searchrow .query { flex: 1 1 0; min-width: 0; }
20
+ .insp { container-type: inline-size; }
21
+ .insphow { margin: 6px 0 0; font-size: 12px; color: var(--text2); overflow-wrap: anywhere; }
22
+ .insp .status:empty { min-height: 0; margin: 0; }
23
+ .results { display: flex; flex-direction: column; gap: 16px; margin-top: 12px; }
24
+ /* The gutter is kept, so the scroll bar coming and going never changes the collage's width. */
25
+ .insp.card .results { max-height: max(360px, 75cqw); overflow-y: auto; scrollbar-gutter: stable; padding: 3px; margin-top: 9px; }
26
+ .refhead { margin: 0 0 6px; font-size: 13px; font-weight: 600; }
27
+ .refgrid { position: relative; }
28
+ .refgrid > .refbtn, .refgrid > .skeleton { position: absolute; }
29
+ .skeleton { border-radius: 6px; background: var(--bg2); }
30
+ .refbtn[aria-pressed="true"] { box-shadow: 0 0 0 2px var(--text); }
31
+ /* Drawn over the picture, which fills the tile and would hide an inset shadow on the button itself. */
32
+ .refbtn.used::after { content: ""; position: absolute; inset: 0; border-radius: inherit; box-shadow: inset 0 0 0 2px var(--ring); pointer-events: none; }
33
+ .check { position: absolute; top: 6px; right: 6px; display: none; place-items: center; width: 20px; height: 20px; border-radius: 50%; background: var(--inverse); color: var(--inverse-text); }
34
+ .refbtn[aria-pressed="true"] .check { display: grid; }
35
+ .usedbadge { position: absolute; left: 6px; bottom: 6px; max-width: calc(100% - 12px); padding: 1px 8px; border-radius: 9px; background: var(--inverse); color: var(--inverse-text); font-size: 11px; font-weight: 600; line-height: 16px; text-align: left; overflow-wrap: anywhere; }
36
+ .placeholder { display: grid; place-items: center; min-height: 160px; border: 1px dashed var(--border); border-radius: var(--radius); color: var(--text2); padding: 16px; text-align: center; }
37
+ .inspbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 8px 12px; margin-top: 12px; padding-top: 10px; border-top: 1px solid var(--border); background: var(--bg); }
38
+ .inspbar .help { flex: 1 1 200px; min-width: 0; }
39
+ .inspbar button { flex: none; }
40
+ /* Sticky in the workspace, and 4 px wider than the grid on each side, so a selected tile's ring never shows past it. */
41
+ .insp.stage .inspbar { position: sticky; bottom: 0; z-index: 1; margin: 12px -4px 0; padding: 10px 4px 12px; }
42
+ `;
43
+ //# sourceMappingURL=mcp-slate-ui-styles-inspiration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-slate-ui-styles-inspiration.js","sourceRoot":"","sources":["../src/mcp-slate-ui-styles-inspiration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;CAyBpD,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * The inspiration pause's bar (mcp-slate-ui-script-pause.ts): the words of the countdown with Change and Continue at
3
+ * their right, and a thin line under them that shortens once a second. Calm by design: no colour but the line's, no
4
+ * animation but the line's one-second step, and none at all when motion is reduced (the line then jumps). In the card
5
+ * the bar sits above the large image; in the workspace it is as wide as the picture; in the Inspiration tab it sits at
6
+ * the foot, under the line that says how the options take the references. A tile of the waiting round shows the
7
+ * reference it will be drawn from, dimmed a little, so it never reads as a finished design.
8
+ */
9
+ export declare const SLATE_UI_PAUSE_STYLES: string;
10
+ //# sourceMappingURL=mcp-slate-ui-styles-pause.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-slate-ui-styles-pause.d.ts","sourceRoot":"","sources":["../src/mcp-slate-ui-styles-pause.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,QAejC,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * The inspiration pause's bar (mcp-slate-ui-script-pause.ts): the words of the countdown with Change and Continue at
3
+ * their right, and a thin line under them that shortens once a second. Calm by design: no colour but the line's, no
4
+ * animation but the line's one-second step, and none at all when motion is reduced (the line then jumps). In the card
5
+ * the bar sits above the large image; in the workspace it is as wide as the picture; in the Inspiration tab it sits at
6
+ * the foot, under the line that says how the options take the references. A tile of the waiting round shows the
7
+ * reference it will be drawn from, dimmed a little, so it never reads as a finished design.
8
+ */
9
+ export const SLATE_UI_PAUSE_STYLES = String.raw `
10
+ .pausebar { min-width: 0; }
11
+ .pausebox { position: relative; display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; min-width: 0; padding: 10px 12px 12px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg2); overflow: hidden; }
12
+ .pausetext { flex: 1 1 220px; min-width: 0; margin: 0; font-size: 13px; line-height: 1.4; color: var(--text); font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
13
+ .pausebtns { display: flex; flex: none; gap: 8px; margin-left: auto; }
14
+ .pausebtns button { flex: none; padding: 6px 14px; }
15
+ .pauseline { position: absolute; left: 0; right: 0; bottom: 0; height: 2px; background: var(--bg3); }
16
+ .pauseline > span { display: block; height: 100%; background: var(--text2); transform-origin: left center; transition: transform 1s linear; }
17
+ @media (prefers-reduced-motion: reduce) { .pauseline > span { transition: none; } }
18
+ #pane-designs > .pausebar { margin-bottom: 12px; }
19
+ #stage .main > .pausebar { width: var(--w); margin-left: auto; margin-right: auto; }
20
+ .insp .pausebar { margin-top: 8px; }
21
+ .insp.stage .pausebar { position: sticky; bottom: 0; z-index: 1; padding-bottom: 12px; background: var(--bg); }
22
+ .pausechoice { margin-top: 12px; }
23
+ .thumbbtn.paused .thumb, .opt.paused .thumb { opacity: .72; }
24
+ `;
25
+ //# sourceMappingURL=mcp-slate-ui-styles-pause.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-slate-ui-styles-pause.js","sourceRoot":"","sources":["../src/mcp-slate-ui-styles-pause.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;CAe9C,CAAC"}
@@ -4,12 +4,16 @@
4
4
  * selection and its panel opens under it. Fluid at any width (`min-width: 0`
5
5
  * on every grid and flex parent).
6
6
  *
7
- * The selection's thumbnails are --thumb-rail (144 px), so its column is sized
8
- * to hold whole ones: 168 px (one per row) from 640px to 899px, where the image
9
- * keeps its room in the desktop app's default 708 px tab; 320 px (two per row)
10
- * from 900px; 472 px (three per row) from 1400px. Below 640px the selection
11
- * becomes one horizontal row above the image, scrolling inside itself, with each
12
- * option's version chips under its thumbnail.
7
+ * The selection lists every round, each as a grid of equal columns no narrower
8
+ * than --thumb-rail times the square root of the round's picture ratio (see
9
+ * mcp-slate-ui-styles.ts), and each tile has its design's own ratio. Its
10
+ * column is 168 px from 640px to 899px, where the image keeps its room in the
11
+ * desktop app's default 708 px tab (one tile across); 320 px from 900px (one
12
+ * 3:2 tile across, two 2:3 ones); 472 px from 1400px (two 3:2 tiles across,
13
+ * three 2:3 ones). Below 640px the selection sits above the image, its rows
14
+ * wrapping at the window's width and the list scrolling down inside a box
15
+ * under half the window's height (the Generate more panel opens below that
16
+ * box); nothing scrolls sideways.
13
17
  *
14
18
  * The action row is right-aligned and as wide as the picture (--ar is set by
15
19
  * the script on the shared parent), so Select, last, ends at the picture's
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-slate-ui-styles-stage.d.ts","sourceRoot":"","sources":["../src/mcp-slate-ui-styles-stage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,qBAAqB,QAgDjC,CAAC"}
1
+ {"version":3,"file":"mcp-slate-ui-styles-stage.d.ts","sourceRoot":"","sources":["../src/mcp-slate-ui-styles-stage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,qBAAqB,QAoDjC,CAAC"}
@@ -4,12 +4,16 @@
4
4
  * selection and its panel opens under it. Fluid at any width (`min-width: 0`
5
5
  * on every grid and flex parent).
6
6
  *
7
- * The selection's thumbnails are --thumb-rail (144 px), so its column is sized
8
- * to hold whole ones: 168 px (one per row) from 640px to 899px, where the image
9
- * keeps its room in the desktop app's default 708 px tab; 320 px (two per row)
10
- * from 900px; 472 px (three per row) from 1400px. Below 640px the selection
11
- * becomes one horizontal row above the image, scrolling inside itself, with each
12
- * option's version chips under its thumbnail.
7
+ * The selection lists every round, each as a grid of equal columns no narrower
8
+ * than --thumb-rail times the square root of the round's picture ratio (see
9
+ * mcp-slate-ui-styles.ts), and each tile has its design's own ratio. Its
10
+ * column is 168 px from 640px to 899px, where the image keeps its room in the
11
+ * desktop app's default 708 px tab (one tile across); 320 px from 900px (one
12
+ * 3:2 tile across, two 2:3 ones); 472 px from 1400px (two 3:2 tiles across,
13
+ * three 2:3 ones). Below 640px the selection sits above the image, its rows
14
+ * wrapping at the window's width and the list scrolling down inside a box
15
+ * under half the window's height (the Generate more panel opens below that
16
+ * box); nothing scrolls sideways.
13
17
  *
14
18
  * The action row is right-aligned and as wide as the picture (--ar is set by
15
19
  * the script on the shared parent), so Select, last, ends at the picture's
@@ -21,14 +25,21 @@ export const SLATE_UI_STAGE_STYLES = String.raw `
21
25
  .stagehead { display: flex; align-items: center; gap: 12px; min-width: 0; }
22
26
  .stagebody { display: grid; grid-template-columns: 320px minmax(0, 1fr); gap: 16px; min-width: 0; align-items: start; }
23
27
  .selection { min-width: 0; display: flex; flex-direction: column; gap: 10px; max-height: calc(100vh - 96px); }
24
- .rail { flex: 1 1 auto; min-height: 0; min-width: 0; display: flex; flex-direction: column; gap: 14px; overflow: auto; padding: 4px; }
28
+ /* The padding is room for a tile's ring and focus outline, which the scrolling list would otherwise cut. */
29
+ .rail { flex: 1 1 auto; min-height: 0; min-width: 0; display: flex; flex-direction: column; gap: 14px; overflow: auto; padding: 6px; }
25
30
  .morehost:empty { display: none; }
26
- .moreslot { position: sticky; bottom: 0; padding: 4px 0; background: var(--bg); }
27
31
  .round { min-width: 0; }
28
32
  .roundhead { font-size: 13px; font-weight: 600; margin: 0 0 6px; }
29
- .options { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, var(--thumb-rail)); gap: 10px 8px; }
30
- .option { min-width: 0; width: var(--thumb-rail); }
31
- .opt { display: block; width: var(--thumb-rail); height: var(--thumb-rail); }
33
+ /* Each round's options, and the row of the Generate more tile, share the columns of the selection's grid. */
34
+ .options, .moreslot { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, calc(var(--thumb-rail) * var(--shape, 1))), 1fr)); gap: 10px 8px; }
35
+ .options { list-style: none; margin: 0; padding: 0; }
36
+ /* The tile sticks to the list's bottom edge: its row reaches down over the list's padding (the 6 px under it) and out
37
+ over the padding at each side, so no sliver of a tile scrolled under it, nor of its selection ring or focus
38
+ outline (painted in that padding), shows below or beside it; its top edge fades, so a tile passing under it is
39
+ not cut by a hard line. */
40
+ .moreslot { position: sticky; bottom: -6px; margin: 0 -6px; padding: 4px 6px 10px; background: var(--bg); }
41
+ .moreslot::before { content: ""; position: absolute; left: 0; right: 0; bottom: 100%; height: 8px; background: linear-gradient(to bottom, transparent, var(--bg)); pointer-events: none; }
42
+ .option { min-width: 0; }
32
43
  .chips { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 4px; }
33
44
  .chip { padding: 1px 7px; font-size: 11px; font-weight: 500; }
34
45
  .chip.selected { background: var(--inverse); color: var(--inverse-text); border-color: var(--inverse); }
@@ -55,12 +66,9 @@ export const SLATE_UI_STAGE_STYLES = String.raw `
55
66
  }
56
67
  @media (max-width: 639px) {
57
68
  .stagebody { grid-template-columns: minmax(0, 1fr); }
69
+ /* The list scrolls down inside a box under half the window; the Generate more panel opens below it at full height. */
58
70
  .selection { max-height: none; }
59
- .rail { flex: none; flex-direction: row; gap: 14px; overflow-x: auto; overflow-y: hidden; padding: 4px 4px 8px; }
60
- /* The selection is a row that scrolls sideways: the tile sticks to its right edge, so it is in view however many options there are. */
61
- .moreslot { position: sticky; bottom: auto; right: 0; flex: none; align-self: flex-end; padding: 0 0 0 8px; }
62
- .round { flex: none; }
63
- .options { display: flex; }
71
+ .rail { flex: none; max-height: 45vh; }
64
72
  #stage .main { --cap: 60vh; }
65
73
  }
66
74
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-slate-ui-styles-stage.js","sourceRoot":"","sources":["../src/mcp-slate-ui-styles-stage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgD9C,CAAC"}
1
+ {"version":3,"file":"mcp-slate-ui-styles-stage.js","sourceRoot":"","sources":["../src/mcp-slate-ui-styles-stage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoD9C,CAAC"}
@@ -7,12 +7,19 @@
7
7
  *
8
8
  * The layout is fluid by construction: the view never asks the host for a
9
9
  * width. Every flex/grid parent sets `min-width: 0` so no child can push the
10
- * frame wider than its pane, and the strip of thumbnails scrolls inside itself.
10
+ * frame wider than its pane, and the thumbnails wrap onto as many rows as
11
+ * they need: nothing scrolls sideways.
11
12
  *
12
- * Thumbnail sizes are tokens, one place each: --thumb-card (the card's strip, 112 px under a 480 px card and 144 px from
13
- * it) and --thumb-rail (the workspace's selection, 144 px). The container queries read the card's own width (`main`).
14
- * Every thumbnail (designs, inspiration, the Based on picture and the reference chips) is `object-fit: contain`, so the
15
- * whole design shows at its own aspect ratio, letterboxed on the neutral tile background.
13
+ * A design's thumbnail has the design's own aspect ratio (`--ar`, set by the script on each tile from its picture, or
14
+ * for an option still without one from what its round draws). The strip and each round of the selection are grids of
15
+ * equal columns; a column is no narrower than a size token times the square root of the row's ratio (`--shape`, also
16
+ * set by the script), so tiles of any ratio have about the same area, and the columns share out what is left. The
17
+ * tokens, one place each: --thumb-card (the card's strip, 124 px under a 480 px card and 170 px from it, so a 3:2
18
+ * design is at least 152 or 208 px wide, a 2:3 one 101 or 139, a square one 124 or 170; at least double the picture
19
+ * a 144 px square tile used to show from 480 px) and --thumb-rail (the workspace's selection, 170 px, 124 px under a
20
+ * 640 px window). The container queries read the card's own width
21
+ * (`main`). Every thumbnail picture (designs, inspiration, the Based on picture and the reference chips) is
22
+ * `object-fit: contain`, so the whole design shows and nothing is cropped or stretched.
16
23
  */
17
24
  export declare const SLATE_UI_STYLES: string;
18
25
  //# sourceMappingURL=mcp-slate-ui-styles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-slate-ui-styles.d.ts","sourceRoot":"","sources":["../src/mcp-slate-ui-styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,eAAe,QAkH3B,CAAC"}
1
+ {"version":3,"file":"mcp-slate-ui-styles.d.ts","sourceRoot":"","sources":["../src/mcp-slate-ui-styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,eAAe,QA4H3B,CAAC"}
@@ -7,12 +7,19 @@
7
7
  *
8
8
  * The layout is fluid by construction: the view never asks the host for a
9
9
  * width. Every flex/grid parent sets `min-width: 0` so no child can push the
10
- * frame wider than its pane, and the strip of thumbnails scrolls inside itself.
10
+ * frame wider than its pane, and the thumbnails wrap onto as many rows as
11
+ * they need: nothing scrolls sideways.
11
12
  *
12
- * Thumbnail sizes are tokens, one place each: --thumb-card (the card's strip, 112 px under a 480 px card and 144 px from
13
- * it) and --thumb-rail (the workspace's selection, 144 px). The container queries read the card's own width (`main`).
14
- * Every thumbnail (designs, inspiration, the Based on picture and the reference chips) is `object-fit: contain`, so the
15
- * whole design shows at its own aspect ratio, letterboxed on the neutral tile background.
13
+ * A design's thumbnail has the design's own aspect ratio (`--ar`, set by the script on each tile from its picture, or
14
+ * for an option still without one from what its round draws). The strip and each round of the selection are grids of
15
+ * equal columns; a column is no narrower than a size token times the square root of the row's ratio (`--shape`, also
16
+ * set by the script), so tiles of any ratio have about the same area, and the columns share out what is left. The
17
+ * tokens, one place each: --thumb-card (the card's strip, 124 px under a 480 px card and 170 px from it, so a 3:2
18
+ * design is at least 152 or 208 px wide, a 2:3 one 101 or 139, a square one 124 or 170; at least double the picture
19
+ * a 144 px square tile used to show from 480 px) and --thumb-rail (the workspace's selection, 170 px, 124 px under a
20
+ * 640 px window). The container queries read the card's own width
21
+ * (`main`). Every thumbnail picture (designs, inspiration, the Based on picture and the reference chips) is
22
+ * `object-fit: contain`, so the whole design shows and nothing is cropped or stretched.
16
23
  */
17
24
  export const SLATE_UI_STYLES = String.raw `
18
25
  /* Host variables win; these fallbacks keep the view usable when a host passes none. System fonts only. */
@@ -42,10 +49,11 @@ export const SLATE_UI_STYLES = String.raw `
42
49
  --ok: var(--color-text-success, var(--f-ok));
43
50
  --radius: var(--border-radius-md, 8px);
44
51
  --font: var(--font-sans, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif);
45
- --thumb-rail: 144px;
52
+ --thumb-rail: 170px;
46
53
  }
47
- #card { --thumb-card: 112px; }
48
- @container (min-width: 480px) { #card { --thumb-card: 144px; } }
54
+ @media (max-width: 639px) { :root { --thumb-rail: 124px; } }
55
+ #card { --thumb-card: 124px; }
56
+ @container (min-width: 480px) { #card { --thumb-card: 170px; } }
49
57
  :root[data-theme="light"] { color-scheme: light; }
50
58
  :root[data-theme="dark"] { color-scheme: dark; }
51
59
  * { box-sizing: border-box; }
@@ -76,27 +84,36 @@ export const SLATE_UI_STYLES = String.raw `
76
84
  .hero.note { width: 100%; aspect-ratio: auto; background: var(--bg2); }
77
85
  .heroimg { display: block; width: 100%; height: 100%; object-fit: fill; user-select: none; -webkit-user-drag: none; }
78
86
  .heroimg.empty { background: var(--bg3); }
87
+ /* An image with no source yet paints nothing. Chromium draws a 1 px silver placeholder frame inside an <img> that has
88
+ no source, square-cornered, and the rounded tile around it then cuts that frame off at its corners: the clipped
89
+ corners of the thumbnails that were still loading or drawing. The tile's own surface stands in until the picture
90
+ arrives, and an option with no picture at all (drawing, failed, stopped) has no <img>. */
91
+ .thumbbtn .thumb:not([src]), .opt .thumb:not([src]), .heroimg:not([src]) { visibility: hidden; }
79
92
  .heronote { padding: 32px 16px; color: var(--text2); text-align: center; overflow-wrap: anywhere; }
80
93
  .hero .badge, .thumbbtn .code, .opt .code { position: absolute; left: 8px; bottom: 8px; padding: 0 8px; border-radius: 999px; background: var(--inverse); color: var(--inverse-text); font-size: 12px; font-weight: 600; line-height: 20px; }
81
94
  .hero .hair { position: absolute; left: 0; right: 0; bottom: 0; }
82
- /* Under 640 px the strip takes the row and Select wraps to its own line at the right; from 640 px Select sits beside the strip. */
83
- .pickrow { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin-top: 10px; min-width: 0; }
95
+ /* Select sits under the large image at the right, in line with the right edge of the thumbnails below; an error about
96
+ a click (Select could not be recorded, the host refused the message) shows beside it and takes no room otherwise. */
97
+ .pickrow { display: flex; align-items: center; gap: 12px; margin-top: 10px; min-width: 0; }
84
98
  .pickrow > button { flex: none; margin-left: auto; }
85
- /* The wrap holds the scrolling strip and, pinned at its right end outside the scroll, the Generate more tile, so the
86
- tile is in view at every width and however many options there are. */
87
- .stripwrap { flex: 1 1 100%; display: flex; align-items: center; gap: 8px; min-width: 0; }
88
- @container (min-width: 640px) { .stripwrap { flex: 1 1 0; } }
89
- /* One row of thumbnails; more than fit scroll sideways inside the strip, never the page, with a fade at the edge. */
90
- .strip { flex: 1 1 0; display: flex; gap: 8px; min-width: 0; margin: 0; padding: 4px; overflow-x: auto; }
91
- .strip.fade { -webkit-mask-image: linear-gradient(to right, #000 calc(100% - 28px), transparent); mask-image: linear-gradient(to right, #000 calc(100% - 28px), transparent); }
99
+ .cardalert { flex: 1 1 0; min-width: 0; margin: 0; font-size: 12px; color: var(--danger); overflow-wrap: anywhere; }
100
+ /* Every option of the strip in view, on as many rows as it takes, and the Generate more tile last; nothing scrolls. */
101
+ .strip { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, calc(var(--thumb-card) * var(--shape, 1))), 1fr)); gap: 8px; align-items: start; margin-top: 12px; min-width: 0; }
92
102
  .thumbbtn, .opt, .refbtn { position: relative; padding: 0; border: 0; border-radius: 6px; background: var(--bg2); overflow: hidden; }
93
- .thumbbtn { flex: none; width: var(--thumb-card); height: var(--thumb-card); }
94
- /* A thumbnail shows the whole design at its own aspect ratio: the tile stays the token's square, the picture is
95
- contained in it and the rest is the neutral tile background, never a crop of the edges. */
103
+ /* A design's tile is as wide as its column and as tall as its picture's ratio makes it. */
104
+ .thumbbtn, .opt { display: block; width: 100%; aspect-ratio: var(--ar, 1.5); align-self: start; }
105
+ /* The tile has the picture's ratio, so the picture fills it; contain keeps the whole design if the two ever differ. */
96
106
  .thumb { display: block; width: 100%; height: 100%; background: var(--bg3); object-fit: contain; object-position: center; }
97
107
  .thumbbtn .code, .opt .code { left: 6px; bottom: 6px; padding: 0 7px; font-size: 11px; line-height: 18px; }
98
108
  .thumbbtn.selected, .opt.selected { box-shadow: 0 0 0 2px var(--text); }
99
- .thumbbtn.failed, .opt.failed { opacity: .5; }
109
+ /* An option with no picture says why on its own tile, above its code: failed (the reason, recessed tile), or stopped
110
+ before it was drawn (what the work said). A drawing option shimmers instead. */
111
+ .tilenote { position: absolute; left: 8px; right: 8px; top: 6px; bottom: 30px; display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 500; line-height: 1.35; text-align: center; color: var(--text2); }
112
+ .tilenote > span { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 4; overflow: hidden; overflow-wrap: anywhere; }
113
+ .thumbbtn.failed, .opt.failed { background: var(--bg); box-shadow: inset 0 0 0 1px var(--border); }
114
+ .thumbbtn.failed.selected, .opt.failed.selected { box-shadow: inset 0 0 0 1px var(--border), 0 0 0 2px var(--text); }
115
+ .failed .tilenote { color: var(--danger); }
116
+ .failed .code { opacity: .6; }
100
117
  .shimmer { background: linear-gradient(100deg, var(--bg2) 30%, var(--bg3) 50%, var(--bg2) 70%); background-size: 200% 100%; animation: shimmer 1.4s linear infinite; }
101
118
  @keyframes shimmer { from { background-position: 100% 0; } to { background-position: -100% 0; } }
102
119
  .field { margin-top: 0; }
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-slate-ui-styles.js","sourceRoot":"","sources":["../src/mcp-slate-ui-styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkHxC,CAAC"}
1
+ {"version":3,"file":"mcp-slate-ui-styles.js","sourceRoot":"","sources":["../src/mcp-slate-ui-styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4HxC,CAAC"}
@@ -4,9 +4,17 @@ import { type SlateUiTarget } from './mcp-slate-ui-script.js';
4
4
  * stylesheet, font, or URL, so it renders under the strictest host sandbox.
5
5
  *
6
6
  * The static markup is the inline card and nothing else: the tabs, one large
7
- * image, one row with the strip of options and Select, one status line, and an
8
- * icon-only control that opens the workspace. The fullscreen stage and its dialogs are built by the
9
- * script into `#stage` only when the host puts the view in fullscreen.
7
+ * image, Select under it (with the place an error about a click shows), the
8
+ * strip of options on as many rows as it takes, and an icon-only control that
9
+ * opens the workspace. The card has no status line: drawing shows on the
10
+ * thumbnails themselves, and an option that failed says why on its own tile.
11
+ * The fullscreen stage and its dialogs are built by the script into `#stage`
12
+ * only when the host puts the view in fullscreen.
13
+ *
14
+ * The markup's words are English, so the first paint is never blank, and each carries its catalogue key
15
+ * (`data-l10n`, `data-l10n-aria`, `data-l10n-label`), so the script re-words it in the person's language before the
16
+ * view shows. The document has no `lang` of its own: a host may set one before the screen is written into its
17
+ * document (Codex does), and the script reads it, then sets the language it speaks.
10
18
  */
11
19
  export declare const buildSlateUiHtml: ({ target }: {
12
20
  target: SlateUiTarget;
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-slate-ui.d.ts","sourceRoot":"","sources":["../src/mcp-slate-ui.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAKlF;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,GAAI,YAAY;IAAE,MAAM,EAAE,aAAa,CAAA;CAAE,KAAG,MAyCxE,CAAC;AAEF,yDAAyD;AACzD,eAAO,MAAM,aAAa,QAAwC,CAAC"}
1
+ {"version":3,"file":"mcp-slate-ui.d.ts","sourceRoot":"","sources":["../src/mcp-slate-ui.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAMlF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,gBAAgB,GAAI,YAAY;IAAE,MAAM,EAAE,aAAa,CAAA;CAAE,KAAG,MAwCxE,CAAC;AAEF,yDAAyD;AACzD,eAAO,MAAM,aAAa,QAAwC,CAAC"}
@@ -2,49 +2,57 @@ import { SLATE_UI_COPY as COPY } from './mcp-slate-ui-copy.js';
2
2
  import { buildSlateUiScript } from './mcp-slate-ui-script.js';
3
3
  import { SLATE_UI_STYLES } from './mcp-slate-ui-styles.js';
4
4
  import { SLATE_UI_DIALOG_STYLES, SLATE_UI_MORE_STYLES } from './mcp-slate-ui-styles-dialog.js';
5
+ import { SLATE_UI_PAUSE_STYLES } from './mcp-slate-ui-styles-pause.js';
5
6
  import { SLATE_UI_STAGE_STYLES } from './mcp-slate-ui-styles-stage.js';
6
7
  /**
7
8
  * The workspace view for one target, as one self-contained HTML document: no external script,
8
9
  * stylesheet, font, or URL, so it renders under the strictest host sandbox.
9
10
  *
10
11
  * The static markup is the inline card and nothing else: the tabs, one large
11
- * image, one row with the strip of options and Select, one status line, and an
12
- * icon-only control that opens the workspace. The fullscreen stage and its dialogs are built by the
13
- * script into `#stage` only when the host puts the view in fullscreen.
12
+ * image, Select under it (with the place an error about a click shows), the
13
+ * strip of options on as many rows as it takes, and an icon-only control that
14
+ * opens the workspace. The card has no status line: drawing shows on the
15
+ * thumbnails themselves, and an option that failed says why on its own tile.
16
+ * The fullscreen stage and its dialogs are built by the script into `#stage`
17
+ * only when the host puts the view in fullscreen.
18
+ *
19
+ * The markup's words are English, so the first paint is never blank, and each carries its catalogue key
20
+ * (`data-l10n`, `data-l10n-aria`, `data-l10n-label`), so the script re-words it in the person's language before the
21
+ * view shows. The document has no `lang` of its own: a host may set one before the screen is written into its
22
+ * document (Codex does), and the script reads it, then sets the language it speaks.
14
23
  */
15
24
  export const buildSlateUiHtml = ({ target }) => `<!doctype html>
16
- <html lang="en">
25
+ <html>
17
26
  <head>
18
27
  <meta charset="utf-8">
19
28
  <meta name="viewport" content="width=device-width, initial-scale=1">${target === 'local' ? '' : `\n<meta name="slate-target" content="${target}">`}
20
29
  <title>${COPY.title}</title>
21
- <style>${SLATE_UI_STYLES}${SLATE_UI_STAGE_STYLES}${SLATE_UI_DIALOG_STYLES}${SLATE_UI_MORE_STYLES}</style>
30
+ <style>${SLATE_UI_STYLES}${SLATE_UI_STAGE_STYLES}${SLATE_UI_DIALOG_STYLES}${SLATE_UI_MORE_STYLES}${SLATE_UI_PAUSE_STYLES}</style>
22
31
  </head>
23
32
  <body>
24
33
  <div id="fatal" class="hidden" role="alert"></div>
25
34
  <main id="app" class="hidden">
26
- <h1 class="sr">${COPY.title}</h1>
27
- <p class="note hidden" id="empty">${COPY.empty}</p>
35
+ <h1 class="sr" data-l10n="title">${COPY.title}</h1>
36
+ <p class="note hidden" id="empty" data-l10n="empty">${COPY.empty}</p>
28
37
  <div id="card">
29
38
  <div class="topbar">
30
- <div class="tabs" role="tablist" aria-label="${COPY.title}">
31
- <button type="button" role="tab" class="tab" data-tab="designs" aria-selected="true">${COPY.tabDesigns}</button>
32
- <button type="button" role="tab" class="tab" data-tab="inspiration" aria-selected="false">${COPY.tabInspiration}</button>
39
+ <div class="tabs" role="tablist" aria-label="${COPY.title}" data-l10n-aria="title">
40
+ <button type="button" role="tab" class="tab" data-tab="designs" aria-selected="true" data-l10n="tabDesigns">${COPY.tabDesigns}</button>
41
+ <button type="button" role="tab" class="tab" data-tab="inspiration" aria-selected="false" data-l10n="tabInspiration">${COPY.tabInspiration}</button>
33
42
  </div>
34
- <button id="expand" type="button" class="iconbtn" aria-label="${COPY.openWorkspace}" title="${COPY.openWorkspace}" disabled>
43
+ <button id="expand" type="button" class="iconbtn" aria-label="${COPY.openWorkspace}" title="${COPY.openWorkspace}" data-l10n-label="openWorkspace" disabled>
35
44
  <svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5"/></svg>
36
45
  </button>
37
46
  </div>
38
47
  <div id="pane-designs">
48
+ <div id="pausebar" class="pausebar hidden"></div>
39
49
  <div id="hero" class="hero"></div>
40
50
  <div class="pickrow">
41
- <div class="stripwrap" id="stripwrap">
42
- <div class="strip" id="strip" role="group" aria-label="${COPY.optionsGroup}"></div>
43
- </div>
44
- <button id="select" type="button" class="primary" disabled>${COPY.select}</button>
51
+ <p class="cardalert" id="cardalert" role="alert"></p>
52
+ <button id="select" type="button" class="primary" data-l10n="select" disabled>${COPY.select}</button>
45
53
  </div>
54
+ <div class="strip" id="strip" role="group" aria-label="${COPY.optionsGroup}" data-l10n-aria="optionsGroup"></div>
46
55
  <div id="more"></div>
47
- <p class="status" id="status" data-status role="status" aria-live="polite"></p>
48
56
  </div>
49
57
  <div id="pane-inspiration" class="hidden"></div>
50
58
  </div>