@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.
- package/SKILL.md +1 -1
- package/dist/cli-codex-readiness.d.ts +6 -0
- package/dist/cli-codex-readiness.d.ts.map +1 -1
- package/dist/cli-codex-readiness.js +12 -12
- package/dist/cli-codex-readiness.js.map +1 -1
- package/dist/cli-help/design.d.ts +2 -2
- package/dist/cli-help/design.d.ts.map +1 -1
- package/dist/cli-help/design.js +2 -0
- package/dist/cli-help/design.js.map +1 -1
- package/dist/cli-help/index.d.ts +2 -2
- package/dist/cli-review-command.d.ts.map +1 -1
- package/dist/cli-review-command.js +2 -0
- package/dist/cli-review-command.js.map +1 -1
- package/dist/cli-run.d.ts.map +1 -1
- package/dist/cli-run.js +6 -0
- package/dist/cli-run.js.map +1 -1
- package/dist/cli-workspace-draw.d.ts +1 -11
- package/dist/cli-workspace-draw.d.ts.map +1 -1
- package/dist/cli-workspace-draw.js +18 -18
- package/dist/cli-workspace-draw.js.map +1 -1
- package/dist/cli-workspace-runner.d.ts +30 -0
- package/dist/cli-workspace-runner.d.ts.map +1 -0
- package/dist/cli-workspace-runner.js +105 -0
- package/dist/cli-workspace-runner.js.map +1 -0
- package/dist/mcp-slate-image.js +1 -1
- package/dist/mcp-slate-image.js.map +1 -1
- package/dist/mcp-slate-tool-defs.js +1 -1
- package/dist/mcp-slate-tool-defs.js.map +1 -1
- package/dist/mcp-slate-ui-copy.d.ts +403 -33
- package/dist/mcp-slate-ui-copy.d.ts.map +1 -1
- package/dist/mcp-slate-ui-copy.js +247 -57
- package/dist/mcp-slate-ui-copy.js.map +1 -1
- package/dist/mcp-slate-ui-icu.d.ts +47 -0
- package/dist/mcp-slate-ui-icu.d.ts.map +1 -0
- package/dist/mcp-slate-ui-icu.js +229 -0
- package/dist/mcp-slate-ui-icu.js.map +1 -0
- package/dist/mcp-slate-ui-locale-match.d.ts +12 -0
- package/dist/mcp-slate-ui-locale-match.d.ts.map +1 -0
- package/dist/mcp-slate-ui-locale-match.js +34 -0
- package/dist/mcp-slate-ui-locale-match.js.map +1 -0
- package/dist/mcp-slate-ui-locales/de-DE.d.ts +9 -0
- package/dist/mcp-slate-ui-locales/de-DE.d.ts.map +1 -0
- package/dist/mcp-slate-ui-locales/de-DE.js +217 -0
- package/dist/mcp-slate-ui-locales/de-DE.js.map +1 -0
- package/dist/mcp-slate-ui-locales/es-419.d.ts +9 -0
- package/dist/mcp-slate-ui-locales/es-419.d.ts.map +1 -0
- package/dist/mcp-slate-ui-locales/es-419.js +217 -0
- package/dist/mcp-slate-ui-locales/es-419.js.map +1 -0
- package/dist/mcp-slate-ui-locales/es-ES.d.ts +9 -0
- package/dist/mcp-slate-ui-locales/es-ES.d.ts.map +1 -0
- package/dist/mcp-slate-ui-locales/es-ES.js +217 -0
- package/dist/mcp-slate-ui-locales/es-ES.js.map +1 -0
- package/dist/mcp-slate-ui-locales/fr-FR.d.ts +9 -0
- package/dist/mcp-slate-ui-locales/fr-FR.d.ts.map +1 -0
- package/dist/mcp-slate-ui-locales/fr-FR.js +217 -0
- package/dist/mcp-slate-ui-locales/fr-FR.js.map +1 -0
- package/dist/mcp-slate-ui-locales/hi-IN.d.ts +9 -0
- package/dist/mcp-slate-ui-locales/hi-IN.d.ts.map +1 -0
- package/dist/mcp-slate-ui-locales/hi-IN.js +217 -0
- package/dist/mcp-slate-ui-locales/hi-IN.js.map +1 -0
- package/dist/mcp-slate-ui-locales/index.d.ts +11 -0
- package/dist/mcp-slate-ui-locales/index.d.ts.map +1 -0
- package/dist/mcp-slate-ui-locales/index.js +34 -0
- package/dist/mcp-slate-ui-locales/index.js.map +1 -0
- package/dist/mcp-slate-ui-locales/it-IT.d.ts +9 -0
- package/dist/mcp-slate-ui-locales/it-IT.d.ts.map +1 -0
- package/dist/mcp-slate-ui-locales/it-IT.js +217 -0
- package/dist/mcp-slate-ui-locales/it-IT.js.map +1 -0
- package/dist/mcp-slate-ui-locales/ja-JP.d.ts +9 -0
- package/dist/mcp-slate-ui-locales/ja-JP.d.ts.map +1 -0
- package/dist/mcp-slate-ui-locales/ja-JP.js +217 -0
- package/dist/mcp-slate-ui-locales/ja-JP.js.map +1 -0
- package/dist/mcp-slate-ui-locales/ko-KR.d.ts +9 -0
- package/dist/mcp-slate-ui-locales/ko-KR.d.ts.map +1 -0
- package/dist/mcp-slate-ui-locales/ko-KR.js +217 -0
- package/dist/mcp-slate-ui-locales/ko-KR.js.map +1 -0
- package/dist/mcp-slate-ui-locales/pt-BR.d.ts +9 -0
- package/dist/mcp-slate-ui-locales/pt-BR.d.ts.map +1 -0
- package/dist/mcp-slate-ui-locales/pt-BR.js +217 -0
- package/dist/mcp-slate-ui-locales/pt-BR.js.map +1 -0
- package/dist/mcp-slate-ui-locales/zh-CN.d.ts +9 -0
- package/dist/mcp-slate-ui-locales/zh-CN.d.ts.map +1 -0
- package/dist/mcp-slate-ui-locales/zh-CN.js +217 -0
- package/dist/mcp-slate-ui-locales/zh-CN.js.map +1 -0
- package/dist/mcp-slate-ui-locales/zh-TW.d.ts +9 -0
- package/dist/mcp-slate-ui-locales/zh-TW.d.ts.map +1 -0
- package/dist/mcp-slate-ui-locales/zh-TW.js +217 -0
- package/dist/mcp-slate-ui-locales/zh-TW.js.map +1 -0
- package/dist/mcp-slate-ui-script-bridge.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script-bridge.js +8 -9
- package/dist/mcp-slate-ui-script-bridge.js.map +1 -1
- package/dist/mcp-slate-ui-script-dialog.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script-dialog.js +60 -30
- package/dist/mcp-slate-ui-script-dialog.js.map +1 -1
- package/dist/mcp-slate-ui-script-inline.d.ts +9 -6
- package/dist/mcp-slate-ui-script-inline.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script-inline.js +91 -46
- package/dist/mcp-slate-ui-script-inline.js.map +1 -1
- package/dist/mcp-slate-ui-script-inspiration-collage.d.ts +20 -0
- package/dist/mcp-slate-ui-script-inspiration-collage.d.ts.map +1 -0
- package/dist/mcp-slate-ui-script-inspiration-collage.js +68 -0
- package/dist/mcp-slate-ui-script-inspiration-collage.js.map +1 -0
- package/dist/mcp-slate-ui-script-inspiration-grid.d.ts +26 -0
- package/dist/mcp-slate-ui-script-inspiration-grid.d.ts.map +1 -0
- package/dist/mcp-slate-ui-script-inspiration-grid.js +246 -0
- package/dist/mcp-slate-ui-script-inspiration-grid.js.map +1 -0
- package/dist/mcp-slate-ui-script-inspiration.d.ts +10 -9
- package/dist/mcp-slate-ui-script-inspiration.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script-inspiration.js +161 -120
- package/dist/mcp-slate-ui-script-inspiration.js.map +1 -1
- package/dist/mcp-slate-ui-script-l10n.d.ts +29 -0
- package/dist/mcp-slate-ui-script-l10n.d.ts.map +1 -0
- package/dist/mcp-slate-ui-script-l10n.js +135 -0
- package/dist/mcp-slate-ui-script-l10n.js.map +1 -0
- package/dist/mcp-slate-ui-script-more.d.ts +3 -2
- package/dist/mcp-slate-ui-script-more.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script-more.js +19 -18
- package/dist/mcp-slate-ui-script-more.js.map +1 -1
- package/dist/mcp-slate-ui-script-pause.d.ts +33 -0
- package/dist/mcp-slate-ui-script-pause.d.ts.map +1 -0
- package/dist/mcp-slate-ui-script-pause.js +217 -0
- package/dist/mcp-slate-ui-script-pause.js.map +1 -0
- package/dist/mcp-slate-ui-script-remote.d.ts +2 -0
- package/dist/mcp-slate-ui-script-remote.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script-remote.js +47 -6
- package/dist/mcp-slate-ui-script-remote.js.map +1 -1
- package/dist/mcp-slate-ui-script-scribble.js +1 -1
- package/dist/mcp-slate-ui-script-select.js +6 -6
- package/dist/mcp-slate-ui-script-stage.d.ts +3 -2
- package/dist/mcp-slate-ui-script-stage.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script-stage.js +31 -19
- package/dist/mcp-slate-ui-script-stage.js.map +1 -1
- package/dist/mcp-slate-ui-script-state.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script-state.js +77 -57
- package/dist/mcp-slate-ui-script-state.js.map +1 -1
- package/dist/mcp-slate-ui-script.d.ts +2 -2
- package/dist/mcp-slate-ui-script.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script.js +21 -7
- package/dist/mcp-slate-ui-script.js.map +1 -1
- package/dist/mcp-slate-ui-styles-dialog.d.ts +6 -7
- package/dist/mcp-slate-ui-styles-dialog.d.ts.map +1 -1
- package/dist/mcp-slate-ui-styles-dialog.js +13 -29
- package/dist/mcp-slate-ui-styles-dialog.js.map +1 -1
- package/dist/mcp-slate-ui-styles-inspiration.d.ts +18 -0
- package/dist/mcp-slate-ui-styles-inspiration.d.ts.map +1 -0
- package/dist/mcp-slate-ui-styles-inspiration.js +43 -0
- package/dist/mcp-slate-ui-styles-inspiration.js.map +1 -0
- package/dist/mcp-slate-ui-styles-pause.d.ts +10 -0
- package/dist/mcp-slate-ui-styles-pause.d.ts.map +1 -0
- package/dist/mcp-slate-ui-styles-pause.js +25 -0
- package/dist/mcp-slate-ui-styles-pause.js.map +1 -0
- package/dist/mcp-slate-ui-styles-stage.d.ts +10 -6
- package/dist/mcp-slate-ui-styles-stage.d.ts.map +1 -1
- package/dist/mcp-slate-ui-styles-stage.js +24 -16
- package/dist/mcp-slate-ui-styles-stage.js.map +1 -1
- package/dist/mcp-slate-ui-styles.d.ts +12 -5
- package/dist/mcp-slate-ui-styles.d.ts.map +1 -1
- package/dist/mcp-slate-ui-styles.js +38 -21
- package/dist/mcp-slate-ui-styles.js.map +1 -1
- package/dist/mcp-slate-ui.d.ts +11 -3
- package/dist/mcp-slate-ui.d.ts.map +1 -1
- package/dist/mcp-slate-ui.js +24 -16
- package/dist/mcp-slate-ui.js.map +1 -1
- package/dist/mosaic-bands.d.ts +44 -0
- package/dist/mosaic-bands.d.ts.map +1 -0
- package/dist/mosaic-bands.js +153 -0
- package/dist/mosaic-bands.js.map +1 -0
- package/dist/review-discovery.d.ts.map +1 -1
- package/dist/review-discovery.js +36 -54
- package/dist/review-discovery.js.map +1 -1
- package/dist/review-page.d.ts.map +1 -1
- package/dist/review-page.js +2 -1
- package/dist/review-page.js.map +1 -1
- package/dist/review-run-roots.d.ts +40 -0
- package/dist/review-run-roots.d.ts.map +1 -0
- package/dist/review-run-roots.js +94 -0
- package/dist/review-run-roots.js.map +1 -0
- package/dist/review-server.d.ts +2 -0
- package/dist/review-server.d.ts.map +1 -1
- package/dist/review-server.js +2 -0
- package/dist/review-server.js.map +1 -1
- package/dist/review-types.d.ts +10 -0
- package/dist/review-types.d.ts.map +1 -1
- package/dist/slate-actions.d.ts +3 -3
- package/dist/slate-actions.d.ts.map +1 -1
- package/dist/slate-actions.js +9 -8
- package/dist/slate-actions.js.map +1 -1
- package/dist/slate-browser-host-script.d.ts +4 -0
- package/dist/slate-browser-host-script.d.ts.map +1 -1
- package/dist/slate-browser-host-script.js +25 -6
- package/dist/slate-browser-host-script.js.map +1 -1
- package/dist/slate-browser-host.d.ts +2 -1
- package/dist/slate-browser-host.d.ts.map +1 -1
- package/dist/slate-browser-host.js +18 -5
- package/dist/slate-browser-host.js.map +1 -1
- package/dist/slate-commit.js +7 -7
- package/dist/slate-commit.js.map +1 -1
- package/dist/slate-corpus.d.ts.map +1 -1
- package/dist/slate-corpus.js +3 -2
- package/dist/slate-corpus.js.map +1 -1
- package/dist/slate-edit-runner.d.ts.map +1 -1
- package/dist/slate-edit-runner.js +5 -4
- package/dist/slate-edit-runner.js.map +1 -1
- package/dist/slate-editability.d.ts +2 -0
- package/dist/slate-editability.d.ts.map +1 -1
- package/dist/slate-editability.js +1 -1
- package/dist/slate-editability.js.map +1 -1
- package/dist/slate-errors.d.ts +7 -1
- package/dist/slate-errors.d.ts.map +1 -1
- package/dist/slate-errors.js +3 -2
- package/dist/slate-errors.js.map +1 -1
- package/dist/slate-handoff-options.d.ts +2 -1
- package/dist/slate-handoff-options.d.ts.map +1 -1
- package/dist/slate-handoff-options.js +2 -2
- package/dist/slate-handoff-options.js.map +1 -1
- package/dist/slate-handoff.js +1 -1
- package/dist/slate-handoff.js.map +1 -1
- package/dist/slate-image-executor.d.ts +28 -3
- package/dist/slate-image-executor.d.ts.map +1 -1
- package/dist/slate-image-executor.js +55 -11
- package/dist/slate-image-executor.js.map +1 -1
- package/dist/slate-inspiration.js +2 -2
- package/dist/slate-inspiration.js.map +1 -1
- package/dist/slate-local-image.d.ts.map +1 -1
- package/dist/slate-local-image.js +4 -1
- package/dist/slate-local-image.js.map +1 -1
- package/dist/slate-lock.js +1 -1
- package/dist/slate-lock.js.map +1 -1
- package/dist/slate-resume.js +6 -6
- package/dist/slate-resume.js.map +1 -1
- package/dist/slate-round-params.d.ts +3 -0
- package/dist/slate-round-params.d.ts.map +1 -1
- package/dist/slate-round-params.js +5 -0
- package/dist/slate-round-params.js.map +1 -1
- package/dist/slate-round-prompt.d.ts +15 -3
- package/dist/slate-round-prompt.d.ts.map +1 -1
- package/dist/slate-round-prompt.js +14 -5
- package/dist/slate-round-prompt.js.map +1 -1
- package/dist/slate-round-queries.d.ts +18 -0
- package/dist/slate-round-queries.d.ts.map +1 -0
- package/dist/slate-round-queries.js +29 -0
- package/dist/slate-round-queries.js.map +1 -0
- package/dist/slate-round-runner.d.ts.map +1 -1
- package/dist/slate-round-runner.js +12 -9
- package/dist/slate-round-runner.js.map +1 -1
- package/dist/slate-round-search.js +5 -5
- package/dist/slate-round-search.js.map +1 -1
- package/dist/slate-run-action.d.ts.map +1 -1
- package/dist/slate-run-action.js +2 -1
- package/dist/slate-run-action.js.map +1 -1
- package/dist/slate-runner-context.d.ts +3 -1
- package/dist/slate-runner-context.d.ts.map +1 -1
- package/dist/slate-runner-context.js +4 -3
- package/dist/slate-runner-context.js.map +1 -1
- package/dist/slate-runner-failure.d.ts +7 -1
- package/dist/slate-runner-failure.d.ts.map +1 -1
- package/dist/slate-runner-failure.js +6 -5
- package/dist/slate-runner-failure.js.map +1 -1
- package/dist/slate-runtime.d.ts.map +1 -1
- package/dist/slate-runtime.js +1 -0
- package/dist/slate-runtime.js.map +1 -1
- package/dist/slate-versions.js +3 -3
- package/dist/slate-versions.js.map +1 -1
- package/dist/slate-view-contract.d.ts +62 -1
- package/dist/slate-view-contract.d.ts.map +1 -1
- package/dist/slate-view-contract.js +30 -0
- package/dist/slate-view-contract.js.map +1 -1
- package/dist/slate-view.d.ts.map +1 -1
- package/dist/slate-view.js +19 -3
- package/dist/slate-view.js.map +1 -1
- package/dist/slate-workspace-parse.d.ts.map +1 -1
- package/dist/slate-workspace-parse.js +22 -0
- package/dist/slate-workspace-parse.js.map +1 -1
- package/dist/slate-workspace-types.d.ts +3 -1
- package/dist/slate-workspace-types.d.ts.map +1 -1
- package/dist/workspace-draw-client.d.ts +58 -5
- package/dist/workspace-draw-client.d.ts.map +1 -1
- package/dist/workspace-draw-client.js +82 -9
- package/dist/workspace-draw-client.js.map +1 -1
- package/dist/workspace-draw-codex.d.ts +9 -4
- package/dist/workspace-draw-codex.d.ts.map +1 -1
- package/dist/workspace-draw-codex.js +17 -3
- package/dist/workspace-draw-codex.js.map +1 -1
- package/dist/workspace-draw-messages.d.ts +31 -0
- package/dist/workspace-draw-messages.d.ts.map +1 -1
- package/dist/workspace-draw-messages.js +30 -0
- package/dist/workspace-draw-messages.js.map +1 -1
- package/dist/workspace-draw-run.d.ts +19 -1
- package/dist/workspace-draw-run.d.ts.map +1 -1
- package/dist/workspace-draw-run.js +98 -5
- package/dist/workspace-draw-run.js.map +1 -1
- package/dist/workspace-draw-store.d.ts +2 -0
- package/dist/workspace-draw-store.d.ts.map +1 -1
- package/dist/workspace-draw-store.js +3 -1
- package/dist/workspace-draw-store.js.map +1 -1
- package/dist/workspace-draw-types.d.ts +2 -0
- package/dist/workspace-draw-types.d.ts.map +1 -1
- package/dist/workspace-draw-types.js +2 -0
- package/dist/workspace-draw-types.js.map +1 -1
- package/dist/workspace-origin.d.ts +15 -0
- package/dist/workspace-origin.d.ts.map +1 -0
- package/dist/workspace-origin.js +36 -0
- package/dist/workspace-origin.js.map +1 -0
- package/dist/workspace-runner-children.d.ts +39 -0
- package/dist/workspace-runner-children.d.ts.map +1 -0
- package/dist/workspace-runner-children.js +139 -0
- package/dist/workspace-runner-children.js.map +1 -0
- package/dist/workspace-runner-client.d.ts +43 -0
- package/dist/workspace-runner-client.d.ts.map +1 -0
- package/dist/workspace-runner-client.js +72 -0
- package/dist/workspace-runner-client.js.map +1 -0
- package/dist/workspace-runner-main.d.ts +56 -0
- package/dist/workspace-runner-main.d.ts.map +1 -0
- package/dist/workspace-runner-main.js +378 -0
- package/dist/workspace-runner-main.js.map +1 -0
- package/dist/workspace-runner-policy.d.ts +40 -0
- package/dist/workspace-runner-policy.d.ts.map +1 -0
- package/dist/workspace-runner-policy.js +47 -0
- package/dist/workspace-runner-policy.js.map +1 -0
- package/dist/workspace-runner-spawn.d.ts +42 -0
- package/dist/workspace-runner-spawn.d.ts.map +1 -0
- package/dist/workspace-runner-spawn.js +60 -0
- package/dist/workspace-runner-spawn.js.map +1 -0
- package/dist/workspace-runner-stop.d.ts +25 -0
- package/dist/workspace-runner-stop.d.ts.map +1 -0
- package/dist/workspace-runner-stop.js +44 -0
- package/dist/workspace-runner-stop.js.map +1 -0
- package/dist/workspace-runner-store.d.ts +26 -0
- package/dist/workspace-runner-store.d.ts.map +1 -0
- package/dist/workspace-runner-store.js +114 -0
- package/dist/workspace-runner-store.js.map +1 -0
- package/open-design.json +2 -2
- package/package.json +1 -1
- package/runtime/codex-conversion/src/images/native-frame.mjs +103 -0
- package/runtime/codex-conversion/src/images/native-invoke.mjs +24 -5
- package/runtime/codex-conversion/src/images/native.mjs +14 -5
- 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,
|
|
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
|
|
4
|
-
*
|
|
5
|
-
*
|
|
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
|
|
13
|
-
*
|
|
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":"
|
|
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
|
|
4
|
-
*
|
|
5
|
-
*
|
|
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
|
-
|
|
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
|
|
49
|
-
*
|
|
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
|
-
.
|
|
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:
|
|
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
|
|
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
|
|
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
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
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
|
|
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
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
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
|
-
|
|
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
|
-
|
|
30
|
-
.
|
|
31
|
-
.
|
|
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;
|
|
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
|
|
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
|
|
10
|
+
* frame wider than its pane, and the thumbnails wrap onto as many rows as
|
|
11
|
+
* they need: nothing scrolls sideways.
|
|
11
12
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
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
|
|
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
|
|
10
|
+
* frame wider than its pane, and the thumbnails wrap onto as many rows as
|
|
11
|
+
* they need: nothing scrolls sideways.
|
|
11
12
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
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:
|
|
52
|
+
--thumb-rail: 170px;
|
|
46
53
|
}
|
|
47
|
-
|
|
48
|
-
|
|
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
|
-
/*
|
|
83
|
-
|
|
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
|
-
|
|
86
|
-
|
|
87
|
-
.
|
|
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
|
-
|
|
94
|
-
|
|
95
|
-
|
|
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
|
-
|
|
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
|
|
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"}
|
package/dist/mcp-slate-ui.d.ts
CHANGED
|
@@ -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,
|
|
8
|
-
*
|
|
9
|
-
*
|
|
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;
|
|
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"}
|
package/dist/mcp-slate-ui.js
CHANGED
|
@@ -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,
|
|
12
|
-
*
|
|
13
|
-
*
|
|
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
|
|
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
|
-
<
|
|
42
|
-
|
|
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>
|