@1agh/maude 0.28.0 → 0.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/{plugins/design/dev-server → apps/studio}/ai-banner.tsx +1 -1
- package/{plugins/design/dev-server → apps/studio}/annotations-context-toolbar.tsx +286 -6
- package/{plugins/design/dev-server → apps/studio}/annotations-layer.tsx +1209 -122
- package/{plugins/design/dev-server → apps/studio}/api.ts +486 -32
- package/{plugins/design/dev-server → apps/studio}/artboard-activity-overlay.tsx +1 -1
- package/{plugins/design/dev-server → apps/studio}/artboard-marquee.tsx +1 -1
- package/apps/studio/bin/_motion-sample-playwright.mjs +129 -0
- package/{plugins/design/dev-server → apps/studio}/bin/canvas-edit.sh +1 -1
- package/{plugins/design/dev-server → apps/studio}/bin/draw-proof.sh +37 -2
- package/{plugins/design/dev-server → apps/studio}/bin/preflight.sh +1 -1
- package/apps/studio/bin/read-annotations.mjs +438 -0
- package/apps/studio/bin/read-annotations.sh +11 -0
- package/{plugins/design/dev-server → apps/studio}/bin/runtime-health.sh +1 -1
- package/{plugins/design/dev-server → apps/studio}/bin/scenario-report.mjs +1 -1
- package/{plugins/design/dev-server → apps/studio}/bin/screenshot.sh +62 -2
- package/apps/studio/bin/server-up.sh +234 -0
- package/apps/studio/bin/to-lottie-verify.html +68 -0
- package/apps/studio/bin/to-lottie.sh +128 -0
- package/{plugins/design/dev-server → apps/studio}/bin/visual-sanity.sh +19 -3
- package/{plugins/design/dev-server → apps/studio}/build.ts +5 -3
- package/{plugins/design/dev-server → apps/studio}/canvas-arrowheads.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/canvas-comment-mount.tsx +2 -2
- package/apps/studio/canvas-create.ts +104 -0
- package/{plugins/design/dev-server → apps/studio}/canvas-cursors.ts +47 -13
- package/{plugins/design/dev-server → apps/studio}/canvas-icons.tsx +60 -1
- package/{plugins/design/dev-server → apps/studio}/canvas-lib-inline.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/canvas-lib-resolver.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/canvas-lib.tsx +41 -33
- package/{plugins/design/dev-server → apps/studio}/canvas-shell.tsx +57 -42
- package/{plugins/design/dev-server → apps/studio}/client/app.jsx +1713 -530
- package/apps/studio/client/canvas-url.js +81 -0
- package/{plugins/design/dev-server → apps/studio}/client/comments-overlay.css +41 -27
- package/{plugins/design/dev-server → apps/studio}/client/index.html +2 -1
- package/apps/studio/client/styles/1-tokens-maude.css +296 -0
- package/apps/studio/client/styles/3-shell-maude.css +459 -0
- package/{plugins/design/dev-server → apps/studio}/client/styles/3-shell.css +129 -0
- package/apps/studio/client/styles/4-components-maude.css +74 -0
- package/{plugins/design/dev-server → apps/studio}/client/styles/4-components.css +357 -34
- package/apps/studio/client/styles/5-maude-overrides.css +123 -0
- package/{plugins/design/dev-server → apps/studio}/client/styles/_index.css +9 -0
- package/{plugins/design/dev-server → apps/studio}/client/styles.css +1 -1
- package/apps/studio/client/tour/overlay.jsx +191 -0
- package/apps/studio/client/tour/usage-tour.js +35 -0
- package/apps/studio/client/whats-new-seen.js +52 -0
- package/apps/studio/client/whats-new.jsx +250 -0
- package/{plugins/design/dev-server → apps/studio}/collab/index.ts +4 -4
- package/{plugins/design/dev-server → apps/studio}/collab/persistence.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/commands/annotation-strokes-command.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/commands/equal-spacing-command.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/commands/move-artboards-command.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/comments-overlay.tsx +25 -6
- package/{plugins/design/dev-server → apps/studio}/context-menu.tsx +2 -2
- package/{plugins/design/dev-server → apps/studio}/contextual-toolbar.tsx +4 -7
- package/{plugins/design/dev-server → apps/studio}/cursors-overlay.tsx +1 -1
- package/apps/studio/dist/client.bundle.js +22825 -0
- package/apps/studio/dist/comment-mount.js +1960 -0
- package/apps/studio/dist/runtime/lib0_decoding.js +1 -0
- package/apps/studio/dist/runtime/lib0_encoding.js +1 -0
- package/apps/studio/dist/runtime/motion.js +4 -0
- package/apps/studio/dist/runtime/motion_react.js +12 -0
- package/apps/studio/dist/runtime/pixi-js.js +3397 -0
- package/apps/studio/dist/runtime/react-dom.js +1 -0
- package/apps/studio/dist/runtime/react-dom_client.js +9 -0
- package/apps/studio/dist/runtime/react.js +1 -0
- package/apps/studio/dist/runtime/react_jsx-dev-runtime.js +1 -0
- package/apps/studio/dist/runtime/react_jsx-runtime.js +1 -0
- package/apps/studio/dist/runtime/y-protocols_awareness.js +1 -0
- package/apps/studio/dist/runtime/y-protocols_sync.js +1 -0
- package/apps/studio/dist/runtime/yjs.js +5 -0
- package/apps/studio/dist/styles.css +5695 -0
- package/{plugins/design/dev-server → apps/studio}/dom-selection.ts +75 -4
- package/apps/studio/draw/animate.ts +333 -0
- package/{plugins/design/dev-server → apps/studio}/draw/brush.ts +4 -4
- package/{plugins/design/dev-server → apps/studio}/draw/composition.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/draw/geometry.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/draw/index.ts +9 -6
- package/{plugins/design/dev-server → apps/studio}/draw/layout.ts +2 -2
- package/apps/studio/draw/morph.ts +204 -0
- package/{plugins/design/dev-server → apps/studio}/draw/optimize.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/draw/palette.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/draw/primitives.ts +1 -1
- package/apps/studio/draw/serialize-animate.ts +324 -0
- package/{plugins/design/dev-server → apps/studio}/draw/serialize.ts +9 -3
- package/apps/studio/draw/test/animate.test.ts +172 -0
- package/{plugins/design/dev-server → apps/studio}/draw/test/layout.test.ts +1 -1
- package/apps/studio/draw/test/morph.test.ts +107 -0
- package/apps/studio/draw/test/serialize-animate.test.ts +142 -0
- package/{plugins/design/dev-server → apps/studio}/draw/test/serialize.test.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/equal-spacing-detector.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/equal-spacing-handles.tsx +7 -29
- package/{plugins/design/dev-server → apps/studio}/examples/perf-100-artboards.tsx +1 -2
- package/{plugins/design/dev-server → apps/studio}/export-dialog.tsx +14 -2
- package/{plugins/design/dev-server → apps/studio}/exporters/index.ts +2 -2
- package/{plugins/design/dev-server → apps/studio}/http.ts +103 -2
- package/{plugins/design/dev-server → apps/studio}/input-router.tsx +8 -1
- package/{plugins/design/dev-server → apps/studio}/inspect.ts +20 -3
- package/{plugins/design/dev-server → apps/studio}/marquee-overlay.tsx +6 -3
- package/{plugins/design/dev-server → apps/studio}/participants-chrome.tsx +1 -1
- package/{plugins/design/dev-server → apps/studio}/paths.ts +15 -11
- package/{plugins/design/dev-server → apps/studio}/server.ts +19 -1
- package/{plugins/design/dev-server → apps/studio}/sync/index.ts +6 -6
- package/{plugins/design/dev-server → apps/studio}/sync/materialize.ts +2 -2
- package/{plugins/design/dev-server → apps/studio}/test/ai-activity.test.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/test/annotations-api.test.ts +1 -2
- package/{plugins/design/dev-server → apps/studio}/test/annotations-layer.test.ts +69 -6
- package/{plugins/design/dev-server → apps/studio}/test/annotations-roundtrip.test.ts +98 -1
- package/apps/studio/test/annotations-text-format.test.ts +396 -0
- package/apps/studio/test/asset-api.test.ts +149 -0
- package/{plugins/design/dev-server → apps/studio}/test/boot-self-heal.test.ts +1 -1
- package/apps/studio/test/canvas-create-api.test.ts +361 -0
- package/{plugins/design/dev-server → apps/studio}/test/canvas-cursors.test.ts +3 -1
- package/{plugins/design/dev-server → apps/studio}/test/canvas-edit.test.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/test/canvas-hmr-runtime.test.tsx +1 -1
- package/{plugins/design/dev-server → apps/studio}/test/canvas-lib-inline.test.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/test/canvas-lib-resolver.test.ts +2 -3
- package/apps/studio/test/canvas-media-drop.test.ts +158 -0
- package/{plugins/design/dev-server → apps/studio}/test/canvas-meta-api.test.ts +1 -2
- package/{plugins/design/dev-server → apps/studio}/test/canvas-origin-gate.test.ts +18 -3
- package/apps/studio/test/canvas-url.test.ts +99 -0
- package/{plugins/design/dev-server → apps/studio}/test/collab-annotations-bridge.test.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/test/collab-bridge.test.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/test/collab-room.test.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/test/collab-stress.test.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/test/comments-api.test.ts +1 -2
- package/{plugins/design/dev-server → apps/studio}/test/compile-entry.test.ts +1 -2
- package/{plugins/design/dev-server → apps/studio}/test/exporters/canva.test.ts +1 -2
- package/{plugins/design/dev-server → apps/studio}/test/exporters/history.test.ts +1 -2
- package/{plugins/design/dev-server → apps/studio}/test/exporters/pw-launch.test.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/test/exporters/scope.test.ts +1 -2
- package/{plugins/design/dev-server → apps/studio}/test/exporters/zip.test.ts +1 -2
- package/{plugins/design/dev-server → apps/studio}/test/git-lifecycle.test.ts +1 -2
- package/{plugins/design/dev-server → apps/studio}/test/handoff-static-frames.test.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/test/hmr-broadcast.test.ts +1 -1
- package/apps/studio/test/index-data-canvas-ds.test.ts +97 -0
- package/apps/studio/test/motion-sample.test.ts +35 -0
- package/{plugins/design/dev-server → apps/studio}/test/perf-harness.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/test/phase-3.6-smoke.test.ts +3 -1
- package/apps/studio/test/read-annotations.test.ts +409 -0
- package/{plugins/design/dev-server → apps/studio}/test/runtime-bundle.test.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/test/sanitize-annotation-svg.test.ts +108 -2
- package/{plugins/design/dev-server → apps/studio}/test/shared-doc-convergence.test.ts +2 -2
- package/{plugins/design/dev-server → apps/studio}/test/shared-doc-migrate.test.ts +2 -3
- package/{plugins/design/dev-server → apps/studio}/test/shared-doc-projection.test.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/test/snap-distance-pill.test.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/test/sync-agent.test.ts +2 -3
- package/{plugins/design/dev-server → apps/studio}/test/sync-atomic-write.test.ts +2 -3
- package/{plugins/design/dev-server → apps/studio}/test/sync-connection-state.test.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/test/sync-echo-guard.test.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/test/sync-fs-mirror.test.ts +1 -2
- package/{plugins/design/dev-server → apps/studio}/test/sync-hardening.test.ts +4 -5
- package/{plugins/design/dev-server → apps/studio}/test/sync-hubs-config.test.ts +1 -2
- package/{plugins/design/dev-server → apps/studio}/test/sync-runtime.test.ts +3 -8
- package/{plugins/design/dev-server → apps/studio}/test/sync-status.test.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/test/sync-untrusted.test.ts +1 -2
- package/apps/studio/test/tour-overlay.test.tsx +56 -0
- package/{plugins/design/dev-server → apps/studio}/test/use-agent-presence.test.tsx +4 -1
- package/{plugins/design/dev-server → apps/studio}/test/use-annotation-resize.test.ts +43 -0
- package/{plugins/design/dev-server → apps/studio}/test/use-snap-guides.test.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/test/use-tool-mode.test.tsx +4 -1
- package/apps/studio/test/whats-new.test.ts +101 -0
- package/apps/studio/text-imports.d.ts +9 -0
- package/{plugins/design/dev-server → apps/studio}/tool-palette.tsx +4 -69
- package/{plugins/design/dev-server → apps/studio}/undo-hud.tsx +1 -1
- package/{plugins/design/dev-server → apps/studio}/undo-stack.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/use-agent-presence.tsx +2 -2
- package/{plugins/design/dev-server → apps/studio}/use-annotation-resize.tsx +41 -12
- package/{plugins/design/dev-server → apps/studio}/use-annotation-selection.tsx +3 -7
- package/{plugins/design/dev-server → apps/studio}/use-annotations-visibility.tsx +2 -2
- package/{plugins/design/dev-server → apps/studio}/use-artboard-drag.tsx +2 -2
- package/{plugins/design/dev-server → apps/studio}/use-canvas-activity.tsx +2 -2
- package/apps/studio/use-canvas-media-drop.tsx +343 -0
- package/{plugins/design/dev-server → apps/studio}/use-collab.tsx +4 -5
- package/{plugins/design/dev-server → apps/studio}/use-cursor-modifiers.tsx +1 -1
- package/{plugins/design/dev-server → apps/studio}/use-keyboard-discipline.tsx +5 -2
- package/{plugins/design/dev-server → apps/studio}/use-selection-set.tsx +10 -2
- package/{plugins/design/dev-server → apps/studio}/use-snap-guides.tsx +1 -1
- package/{plugins/design/dev-server → apps/studio}/use-tool-mode.tsx +4 -2
- package/{plugins/design/dev-server → apps/studio}/use-undo-stack.tsx +5 -6
- package/apps/studio/whats-new.json +139 -0
- package/apps/studio/whats-new.schema.json +70 -0
- package/apps/studio/whats-new.ts +87 -0
- package/cli/bin/maude.mjs +10 -0
- package/cli/commands/design.mjs +84 -10
- package/cli/commands/design.test.mjs +133 -1
- package/cli/commands/help.mjs +8 -2
- package/cli/commands/hub.mjs +3 -3
- package/cli/commands/hub.test.mjs +1 -1
- package/cli/commands/scenario-report.mjs +2 -9
- package/cli/lib/cache.mjs +1 -1
- package/cli/lib/config-lint.mjs +1 -1
- package/cli/lib/copy-tree.mjs +1 -1
- package/cli/lib/design-link.mjs +1 -1
- package/cli/lib/flow-design-integration.test.mjs +2 -2
- package/cli/lib/gitignore-block.mjs +1 -0
- package/cli/lib/gitignore-block.test.mjs +2 -2
- package/cli/lib/plugin-cli-reachability.test.mjs +8 -7
- package/cli/lib/preflight.mjs +1 -1
- package/cli/lib/stack-detect.mjs +1 -1
- package/package.json +16 -16
- package/plugins/design/templates/_shell.html +3 -3
- package/plugins/design/templates/brief-board.tsx.template +61 -0
- package/plugins/design/templates/canvas.tsx.template +1 -1
- package/plugins/design/templates/design-system-inspiration/SUB-AGENT-PROMPTS.md +18 -3
- package/plugins/design/templates/design-system-inspiration/core/config.json.tpl +1 -1
- package/plugins/design/templates/design-system-inspiration/core/preview/_motion-readme.md.tpl +1 -1
- package/plugins/flow/.claude-plugin/config.schema.json +16 -0
- package/plugins/design/dev-server/bin/server-up.sh +0 -135
- package/plugins/design/dev-server/dist/client.bundle.js +0 -20692
- package/plugins/design/dev-server/dist/comment-mount.js +0 -1924
- package/plugins/design/dev-server/dist/runtime/lib0_decoding.js +0 -620
- package/plugins/design/dev-server/dist/runtime/lib0_encoding.js +0 -604
- package/plugins/design/dev-server/dist/runtime/motion.js +0 -4944
- package/plugins/design/dev-server/dist/runtime/motion_react.js +0 -10056
- package/plugins/design/dev-server/dist/runtime/pixi-js.js +0 -53104
- package/plugins/design/dev-server/dist/runtime/react-dom.js +0 -231
- package/plugins/design/dev-server/dist/runtime/react-dom_client.js +0 -10357
- package/plugins/design/dev-server/dist/runtime/react.js +0 -535
- package/plugins/design/dev-server/dist/runtime/react_jsx-dev-runtime.js +0 -60
- package/plugins/design/dev-server/dist/runtime/react_jsx-runtime.js +0 -85
- package/plugins/design/dev-server/dist/runtime/y-protocols_awareness.js +0 -376
- package/plugins/design/dev-server/dist/runtime/y-protocols_sync.js +0 -100
- package/plugins/design/dev-server/dist/runtime/yjs.js +0 -6687
- package/plugins/design/dev-server/dist/styles.css +0 -2710
- package/{plugins/design/dev-server → apps/studio}/activity.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/bin/_enumerate-artboards-playwright.mjs +0 -0
- package/{plugins/design/dev-server → apps/studio}/bin/_html-playwright.mjs +0 -0
- package/{plugins/design/dev-server → apps/studio}/bin/_pdf-playwright.mjs +0 -0
- package/{plugins/design/dev-server → apps/studio}/bin/_png-playwright.mjs +0 -0
- package/{plugins/design/dev-server → apps/studio}/bin/_pptx-playwright.mjs +0 -0
- package/{plugins/design/dev-server → apps/studio}/bin/_pw-launch.mjs +0 -0
- package/{plugins/design/dev-server → apps/studio}/bin/_screenshot-playwright.mjs +0 -0
- package/{plugins/design/dev-server → apps/studio}/bin/_svg-optimize.mjs +0 -0
- package/{plugins/design/dev-server → apps/studio}/bin/_svg-playwright.mjs +0 -0
- package/{plugins/design/dev-server → apps/studio}/bin/asset-sweep.sh +0 -0
- package/{plugins/design/dev-server → apps/studio}/bin/bootstrap-check.sh +0 -0
- package/{plugins/design/dev-server → apps/studio}/bin/check-runtime-bundles.sh +0 -0
- package/{plugins/design/dev-server → apps/studio}/bin/draw-build.sh +0 -0
- package/{plugins/design/dev-server → apps/studio}/bin/handoff.sh +0 -0
- package/{plugins/design/dev-server → apps/studio}/bin/prep.sh +0 -0
- package/{plugins/design/dev-server → apps/studio}/bin/slug.sh +0 -0
- package/{plugins/design/dev-server → apps/studio}/bin/smoke.sh +0 -0
- package/{plugins/design/dev-server → apps/studio}/bin/svg-optimize.sh +0 -0
- package/{plugins/design/dev-server → apps/studio}/boot-self-heal.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/canvas-build.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/canvas-edit.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/canvas-header.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/canvas-meta.schema.json +0 -0
- package/{plugins/design/dev-server → apps/studio}/canvas-pipeline.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/client/hmr.mjs +0 -0
- package/{plugins/design/dev-server → apps/studio}/client/iframe-lazy.mjs +0 -0
- package/{plugins/design/dev-server → apps/studio}/client/styles/0-reset.css +0 -0
- package/{plugins/design/dev-server → apps/studio}/client/styles/1-tokens.css +0 -0
- package/{plugins/design/dev-server → apps/studio}/client/styles/2-layout.css +0 -0
- package/{plugins/design/dev-server → apps/studio}/client/styles/5-utilities.css +0 -0
- package/{plugins/design/dev-server → apps/studio}/collab/ai-activity.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/collab/awareness-bridge.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/collab/git-lifecycle.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/collab/protocol.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/collab/registry.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/collab/room.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/config.schema.json +0 -0
- package/{plugins/design/dev-server → apps/studio}/context.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/dist/runtime/.min-sizes.json +0 -0
- package/{plugins/design/dev-server → apps/studio}/draw/test/brush.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/draw/test/composition.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/draw/test/geometry.test.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/draw/test/gradient.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/draw/test/optimize.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/draw/test/palette.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/draw/test/primitives.test.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/examples/README.md +0 -0
- package/{plugins/design/dev-server → apps/studio}/exporters/_browser-bundles.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/exporters/canva-handoff-prompt.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/exporters/canva.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/exporters/html.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/exporters/pdf.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/exporters/png.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/exporters/pptx.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/exporters/scope.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/exporters/svg.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/exporters/zip.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/fs-watch.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/handoff.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/history.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/hmr-broadcast.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/locator.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/mem.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/runtime-bundle.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/server.mjs +0 -0
- package/{plugins/design/dev-server → apps/studio}/sync/agent.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/sync/atomic-write.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/sync/codec.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/sync/connection-state.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/sync/echo-guard.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/sync/fs-mirror.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/sync/hubs-config.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/sync/migrate-seed.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/sync/origins.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/sync/projection.ts +3 -3
- package/{plugins/design/dev-server → apps/studio}/sync/status.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/sync/untrusted.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/_helpers.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/active-state.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/activity.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/annotation-strokes-command.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/annotations-draw-modifiers.test.ts +2 -2
- package/{plugins/design/dev-server → apps/studio}/test/artboard-activity-overlay.test.tsx +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/binary-smoke.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/bundle-smoke.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/canvas-build.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/canvas-header.test.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/test/canvas-lib-motion.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/canvas-pipeline.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/canvas-route.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/collab-awareness-bridge.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/collab-loopback.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/collab-protocol.test.ts +2 -2
- package/{plugins/design/dev-server → apps/studio}/test/collab-reseed-guard.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/comment-mount.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/context-resolve-tokens.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/csp-canvas-shell.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/equal-spacing-detector.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/exporters/endpoint.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/exporters/html.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/exporters/pdf.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/exporters/png.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/exporters/pptx-deck.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/exporters/pptx.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/exporters/svg.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/fixtures/phase-20-annotations.svg +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/fixtures/phase-21-annotations.svg +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/fs-watch.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/handoff.test.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/test/history-rollback.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/hmr-classify.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/input-router.test.ts +2 -2
- package/{plugins/design/dev-server → apps/studio}/test/locator.test.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/test/marquee-overlay.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/move-artboards-command.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/participants-chrome.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/paths.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/runtime-bundle-error-mapping.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/server-lifecycle.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/shared-doc-foundation.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/sync-codec.test.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/test/sync-meta-codec.test.ts +1 -1
- package/{plugins/design/dev-server → apps/studio}/test/system-endpoint.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/tool-palette.test.tsx +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/undo-stack.test.ts +2 -2
- package/{plugins/design/dev-server → apps/studio}/test/use-annotation-selection.test.tsx +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/use-artboard-drag.test.ts +3 -3
- package/{plugins/design/dev-server → apps/studio}/test/use-canvas-activity.test.tsx +2 -2
- package/{plugins/design/dev-server → apps/studio}/test/use-collab.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/use-cursor-modifiers.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/use-keyboard-discipline.test.ts +0 -0
- package/{plugins/design/dev-server → apps/studio}/test/use-selection-set.test.tsx +1 -1
- package/{plugins/design/dev-server → apps/studio}/test/use-undo-stack.test.tsx +2 -2
- /package/{plugins/design/dev-server → apps/studio}/test/ws-handshake.test.ts +0 -0
- /package/{plugins/design/dev-server → apps/studio}/tsconfig.json +0 -0
- /package/{plugins/design/dev-server → apps/studio}/ws.ts +0 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
// Canvas iframe URL builder — pure, dependency-free (URLSearchParams only) so it
|
|
2
|
+
// is unit-testable without booting React or a DOM. `app.jsx` imports both
|
|
3
|
+
// helpers; `test/canvas-url.test.ts` exercises the token-resolution branches.
|
|
4
|
+
//
|
|
5
|
+
// DDR-093 — a UI canvas resolves its tokens/components from its OWN design
|
|
6
|
+
// system (`meta.designSystem`, surfaced by the server as
|
|
7
|
+
// `cfg.canvasDesignSystems[path]`), NOT unconditionally from `designSystems[0]`.
|
|
8
|
+
// Before this, every `ui/*.tsx` authored under a non-default DS loaded the
|
|
9
|
+
// default DS's tokens — whose ladder is scoped to a different `.<rootClass>`
|
|
10
|
+
// subtree — so every `var(--*)` went undefined and the canvas rendered white.
|
|
11
|
+
|
|
12
|
+
export function urlOf(p) {
|
|
13
|
+
return '/' + p.split('/').map(encodeURIComponent).join('/');
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export function canvasUrl(p, cfg, opts) {
|
|
17
|
+
if (!p.endsWith('.tsx')) return urlOf(p);
|
|
18
|
+
const designRel = (cfg?.designRel || '.design').replace(/^\/+|\/+$/g, '');
|
|
19
|
+
// Path under designRoot.
|
|
20
|
+
let rel = p;
|
|
21
|
+
if (rel.startsWith(designRel + '/')) rel = rel.slice(designRel.length + 1);
|
|
22
|
+
// Pass `rel` to URLSearchParams RAW — it does encoding once. Pre-encoding
|
|
23
|
+
// with encodeURIComponent then handing to URLSearchParams produced
|
|
24
|
+
// `Docs%2520Site.tsx` (the `%` of `%20` got re-encoded as `%25`) and broke
|
|
25
|
+
// every UI canvas with a space in its filename.
|
|
26
|
+
const params = new URLSearchParams();
|
|
27
|
+
params.set('canvas', rel);
|
|
28
|
+
params.set('designRel', designRel);
|
|
29
|
+
// Gallery thumbnails suppress the shell-owned comment layer (`?comments=0`)
|
|
30
|
+
// so previews stay non-interactive; opening the same canvas as a real tab
|
|
31
|
+
// omits the flag and gets comments. See canvas-comment-mount.tsx.
|
|
32
|
+
if (opts?.thumbnail) params.set('comments', '0');
|
|
33
|
+
const ds0 = cfg?.designSystems?.[0];
|
|
34
|
+
// Specimen detection: anything under `system/<ds>/preview/` belongs to that
|
|
35
|
+
// specific DS, so it must render with *that* DS's tokens — not always the
|
|
36
|
+
// first one. In a multi-DS project this is what keeps each design system's
|
|
37
|
+
// preview distinct (beta previews use beta tokens, not alpha's).
|
|
38
|
+
const specMatch = rel.match(/^system\/([^/]+)\/preview\//);
|
|
39
|
+
const specDsEntry = specMatch
|
|
40
|
+
? cfg?.designSystems?.find(
|
|
41
|
+
(d) => d.path === `system/${specMatch[1]}` || d.path.endsWith(`/${specMatch[1]}`)
|
|
42
|
+
)
|
|
43
|
+
: null;
|
|
44
|
+
// For a UI canvas (NOT a specimen), honor its declared design system. The
|
|
45
|
+
// explicit `opts.ds` wins (the unit-test seam); otherwise the server-surfaced
|
|
46
|
+
// `cfg.canvasDesignSystems[path]` map tells us which DS this canvas authored
|
|
47
|
+
// against. Unknown DS (single-DS / legacy / default-DS canvas) → `ds0`, which
|
|
48
|
+
// keeps the historical behavior byte-for-byte. DDR-093.
|
|
49
|
+
const uiDsName = !specMatch ? (opts?.ds ?? cfg?.canvasDesignSystems?.[p]) : null;
|
|
50
|
+
const uiDsEntry = uiDsName ? cfg?.designSystems?.find((d) => d.name === uiDsName) : null;
|
|
51
|
+
const uiDs = uiDsEntry || ds0;
|
|
52
|
+
// Resolve tokens path. For a specimen, prefer the matching DS's tokensCssRel
|
|
53
|
+
// (fall back to the `system/<ds>/colors_and_type.css` convention). Otherwise
|
|
54
|
+
// prefer the canvas's own design system's tokensCssRel — falling back to ds0
|
|
55
|
+
// then the legacy top-level `cfg.tokensCssRel` (`system/colors_and_type.css`,
|
|
56
|
+
// usually absent post-bootstrap).
|
|
57
|
+
const tokens = specMatch
|
|
58
|
+
? specDsEntry?.tokensCssRel || `system/${specMatch[1]}/colors_and_type.css`
|
|
59
|
+
: uiDs?.tokensCssRel || cfg?.tokensCssRel;
|
|
60
|
+
if (tokens) params.set('tokens', tokens);
|
|
61
|
+
if (cfg?.componentsCssRel) params.set('components', cfg.componentsCssRel);
|
|
62
|
+
if (specMatch) {
|
|
63
|
+
const dsName = specMatch[1];
|
|
64
|
+
params.set('layout', `system/${dsName}/preview/_layout.css`);
|
|
65
|
+
if (!cfg?.componentsCssRel) {
|
|
66
|
+
params.set('components', `system/${dsName}/preview/_components.css`);
|
|
67
|
+
}
|
|
68
|
+
} else if (uiDs?.path) {
|
|
69
|
+
// UI canvas — load the canvas's own DS `_components.css` so the dc-canvas /
|
|
70
|
+
// dc-section / dc-artboard chrome (and any DS classes the canvas reuses)
|
|
71
|
+
// renders correctly under the same DS as the tokens above.
|
|
72
|
+
if (!cfg?.componentsCssRel) {
|
|
73
|
+
params.set('components', `${uiDs.path}/preview/_components.css`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
// T2 (9.1-A) — load the iframe from the segregated canvas origin when the
|
|
77
|
+
// server advertises one; fall back to a same-origin relative URL otherwise
|
|
78
|
+
// (older server, tests). The trailing path + query are identical either way.
|
|
79
|
+
const origin = cfg?.canvasOrigin || '';
|
|
80
|
+
return `${origin}/_canvas-shell.html?${params.toString()}`;
|
|
81
|
+
}
|
|
@@ -28,12 +28,13 @@
|
|
|
28
28
|
height: 24px;
|
|
29
29
|
padding: 0;
|
|
30
30
|
margin: 0;
|
|
31
|
-
background: var(--accent, #
|
|
31
|
+
background: var(--accent, #6f63ef);
|
|
32
32
|
color: var(--accent-fg, #faf6ef);
|
|
33
|
-
border:
|
|
34
|
-
border-radius:
|
|
33
|
+
border: 1.5px solid var(--bg-0, #14131a);
|
|
34
|
+
border-radius: var(--radius-sm, 5px) var(--radius-sm, 5px) var(--radius-sm, 5px) 2px;
|
|
35
|
+
box-shadow: var(--shadow-md, 0 4px 14px rgba(0,0,0,0.3));
|
|
35
36
|
font: 600 var(--type-xs, 11px) / 1 var(--font-mono, ui-monospace, monospace);
|
|
36
|
-
letter-spacing: var(--tracking-
|
|
37
|
+
letter-spacing: var(--tracking-wide, 0.04em);
|
|
37
38
|
display: grid;
|
|
38
39
|
place-items: center;
|
|
39
40
|
cursor: pointer;
|
|
@@ -70,11 +71,11 @@
|
|
|
70
71
|
position: absolute;
|
|
71
72
|
width: 300px;
|
|
72
73
|
background: var(--bg-1, #faf6ef);
|
|
73
|
-
border: var(--
|
|
74
|
+
border: 1px solid var(--border-default, #3a352f);
|
|
74
75
|
border-radius: var(--radius-sm, 2px);
|
|
75
76
|
padding: var(--space-4, 12px);
|
|
76
|
-
box-shadow:
|
|
77
|
-
font: var(--type-sm, 13px) / var(--lh-
|
|
77
|
+
box-shadow: var(--shadow-md, 0 4px 14px rgba(0,0,0,0.22));
|
|
78
|
+
font: var(--type-sm, 13px) / var(--lh-base, 1.5) var(--font-body, system-ui, sans-serif);
|
|
78
79
|
color: var(--fg-0, #2a2520);
|
|
79
80
|
pointer-events: auto;
|
|
80
81
|
z-index: 4;
|
|
@@ -107,8 +108,8 @@
|
|
|
107
108
|
resize: vertical;
|
|
108
109
|
background: var(--bg-0, #ffffff);
|
|
109
110
|
color: var(--fg-0, #2a2520);
|
|
110
|
-
border: var(--
|
|
111
|
-
border-radius:
|
|
111
|
+
border: 1px solid var(--border-default, #3a352f);
|
|
112
|
+
border-radius: var(--radius-sm, 5px);
|
|
112
113
|
padding: var(--space-3, 8px);
|
|
113
114
|
font: inherit;
|
|
114
115
|
box-sizing: border-box;
|
|
@@ -132,8 +133,8 @@
|
|
|
132
133
|
letter-spacing: var(--tracking-eyebrow, 0.08em);
|
|
133
134
|
text-transform: uppercase;
|
|
134
135
|
padding: var(--space-2, 4px) var(--space-3, 8px);
|
|
135
|
-
border: var(--
|
|
136
|
-
border-radius:
|
|
136
|
+
border: 1px solid var(--border-default, #3a352f);
|
|
137
|
+
border-radius: var(--radius-sm, 5px);
|
|
137
138
|
cursor: pointer;
|
|
138
139
|
background: transparent;
|
|
139
140
|
color: var(--fg-0, #2a2520);
|
|
@@ -171,11 +172,11 @@
|
|
|
171
172
|
max-height: 60vh;
|
|
172
173
|
overflow: auto;
|
|
173
174
|
background: var(--bg-2, color-mix(in oklab, var(--bg-1, #faf6ef) 80%, var(--fg-0, #2a2520) 6%));
|
|
174
|
-
border: var(--
|
|
175
|
+
border: 1px solid var(--border-default, #3a352f);
|
|
175
176
|
border-radius: var(--radius-sm, 2px);
|
|
176
177
|
padding: var(--space-4, 12px);
|
|
177
|
-
box-shadow:
|
|
178
|
-
font: var(--type-sm, 13px) / var(--lh-
|
|
178
|
+
box-shadow: var(--shadow-md, 0 4px 14px rgba(0,0,0,0.22));
|
|
179
|
+
font: var(--type-sm, 13px) / var(--lh-base, 1.5) var(--font-body, system-ui, sans-serif);
|
|
179
180
|
color: var(--fg-0, #2a2520);
|
|
180
181
|
pointer-events: auto;
|
|
181
182
|
z-index: 5;
|
|
@@ -186,26 +187,39 @@
|
|
|
186
187
|
flex-direction: column;
|
|
187
188
|
gap: var(--space-2, 4px);
|
|
188
189
|
padding-bottom: var(--space-3, 8px);
|
|
189
|
-
border-bottom: var(--
|
|
190
|
+
border-bottom: 1px solid var(--border-default, #3a352f);
|
|
190
191
|
}
|
|
191
192
|
|
|
192
193
|
.cm-thread__head-row {
|
|
193
194
|
display: flex;
|
|
194
|
-
justify-content:
|
|
195
|
-
align-items:
|
|
195
|
+
justify-content: flex-start;
|
|
196
|
+
align-items: center;
|
|
196
197
|
gap: var(--space-2, 4px);
|
|
197
198
|
}
|
|
198
199
|
|
|
200
|
+
/* Plan C P18 — pin/sequence badge in the thread popover header. */
|
|
201
|
+
.cm-thread__seq {
|
|
202
|
+
flex: none;
|
|
203
|
+
display: inline-grid;
|
|
204
|
+
place-items: center;
|
|
205
|
+
width: 18px;
|
|
206
|
+
height: 18px;
|
|
207
|
+
border-radius: 4px;
|
|
208
|
+
background: var(--accent, #d63b1f);
|
|
209
|
+
color: var(--accent-fg, #fff);
|
|
210
|
+
font: 600 var(--type-xs, 11px) / 1 var(--font-mono, ui-monospace, monospace);
|
|
211
|
+
}
|
|
212
|
+
|
|
199
213
|
.cm-thread__close {
|
|
200
214
|
background: transparent;
|
|
201
215
|
color: var(--fg-2, #6e6660);
|
|
202
|
-
border: var(--
|
|
203
|
-
border-radius:
|
|
216
|
+
border: 1px solid var(--border-default, #3a352f);
|
|
217
|
+
border-radius: var(--radius-sm, 5px);
|
|
204
218
|
padding: 0 var(--space-2, 4px);
|
|
205
219
|
font: 600 var(--type-xs, 11px) / 1.2 var(--font-mono, ui-monospace, monospace);
|
|
206
220
|
cursor: pointer;
|
|
207
221
|
align-self: flex-start;
|
|
208
|
-
margin-left:
|
|
222
|
+
margin-left: auto;
|
|
209
223
|
transition: background var(--dur-flip, 120ms) var(--ease-out, ease-out);
|
|
210
224
|
}
|
|
211
225
|
|
|
@@ -285,7 +299,7 @@
|
|
|
285
299
|
|
|
286
300
|
.cm-thread__reply-form {
|
|
287
301
|
padding-top: var(--space-3, 8px);
|
|
288
|
-
border-top: var(--
|
|
302
|
+
border-top: 1px solid var(--border-default, #3a352f);
|
|
289
303
|
display: flex;
|
|
290
304
|
flex-direction: column;
|
|
291
305
|
gap: var(--space-2, 4px);
|
|
@@ -297,8 +311,8 @@
|
|
|
297
311
|
resize: vertical;
|
|
298
312
|
background: var(--bg-0, #ffffff);
|
|
299
313
|
color: var(--fg-0, #2a2520);
|
|
300
|
-
border: var(--
|
|
301
|
-
border-radius:
|
|
314
|
+
border: 1px solid var(--border-default, #3a352f);
|
|
315
|
+
border-radius: var(--radius-sm, 5px);
|
|
302
316
|
padding: var(--space-3, 8px);
|
|
303
317
|
font: inherit;
|
|
304
318
|
box-sizing: border-box;
|
|
@@ -321,7 +335,7 @@
|
|
|
321
335
|
gap: var(--space-2, 4px);
|
|
322
336
|
padding-top: var(--space-3, 8px);
|
|
323
337
|
margin-top: var(--space-3, 8px);
|
|
324
|
-
border-top: var(--
|
|
338
|
+
border-top: 1px solid var(--border-default, #3a352f);
|
|
325
339
|
}
|
|
326
340
|
|
|
327
341
|
.cm-thread__actions .cm-btn--danger {
|
|
@@ -338,14 +352,14 @@
|
|
|
338
352
|
.cm-mention-popup {
|
|
339
353
|
position: absolute;
|
|
340
354
|
background: var(--bg-2, color-mix(in oklab, var(--bg-1, #faf6ef) 80%, var(--fg-0, #2a2520) 6%));
|
|
341
|
-
border: var(--
|
|
342
|
-
border-radius:
|
|
355
|
+
border: 1px solid var(--border-default, #3a352f);
|
|
356
|
+
border-radius: var(--radius-sm, 5px);
|
|
343
357
|
font: var(--type-xs, 11px) / var(--lh-xs, 1.3) var(--font-mono, ui-monospace, monospace);
|
|
344
358
|
color: var(--fg-0, #2a2520);
|
|
345
359
|
max-height: 180px;
|
|
346
360
|
min-width: 160px;
|
|
347
361
|
overflow: auto;
|
|
348
|
-
box-shadow:
|
|
362
|
+
box-shadow: var(--shadow-md, 0 4px 14px rgba(0,0,0,0.22));
|
|
349
363
|
pointer-events: auto;
|
|
350
364
|
z-index: 6;
|
|
351
365
|
list-style: none;
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
<html data-theme="dark">
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="utf-8">
|
|
5
|
-
<title>
|
|
5
|
+
<title>maude · studio</title>
|
|
6
|
+
<link rel="icon" href="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2032%2032'%3E%3Cpath%20d='M7%200H25A7%207%200%200%201%2032%207V32H7A7%207%200%200%201%200%2025V7A7%207%200%200%201%207%200Z'%20fill='%235b62e8'/%3E%3Cpath%20d='M16%205l2.8%208.2L27%2016l-8.2%202.8L16%2027l-2.8-8.2L5%2016l8.2-2.8z'%20fill='%23fff'/%3E%3C/svg%3E">
|
|
6
7
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
7
8
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
8
9
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&display=swap">
|
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
/* @layer tokens — maude DS token ladder for the studio shell (Plan B).
|
|
2
|
+
*
|
|
3
|
+
* Lifted VERBATIM from `.design/system/maude/colors_and_type.css` (the
|
|
4
|
+
* authoritative maude token file — "Unified Pro Studio", dark-first), with ONE
|
|
5
|
+
* scoping adaptation: the dark block is bound to `.maude[data-theme="dark"]`
|
|
6
|
+
* ONLY — NOT `:root` — so it stays additive alongside the legacy amber-rust
|
|
7
|
+
* shell ladder in `1-tokens.css` while the shell is rewritten slice-by-slice
|
|
8
|
+
* (Plan B Tasks 3–7). The new `.st-*` chrome lives under a `.maude[data-theme]`
|
|
9
|
+
* wrapper; old chrome keeps resolving the `:root` amber tokens until removed.
|
|
10
|
+
*
|
|
11
|
+
* The `.maude[data-theme]` scope (specificity 0,2,0) wins over `:root` for any
|
|
12
|
+
* element inside the wrapper, so the maude ladder drives every `.st-*` rule.
|
|
13
|
+
* Once the last legacy chrome rule is gone (end of Task 6) the amber
|
|
14
|
+
* `1-tokens.css` + `--u-*` bridge can be deleted and these can fold to `:root`.
|
|
15
|
+
*
|
|
16
|
+
* Per CLAUDE.md "Lift, don't reinvent" + DDR-014 (@layer order preserved).
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
@layer tokens {
|
|
20
|
+
|
|
21
|
+
/* ─── DARK — default studio theme ──────────────────────────────────────────── */
|
|
22
|
+
.maude[data-theme="dark"] {
|
|
23
|
+
/* Surfaces (deepest → highest) — cool-neutral ladder, hue 255 */
|
|
24
|
+
--bg-0: oklch(0.165 0.012 255);
|
|
25
|
+
--bg-1: oklch(0.198 0.012 255);
|
|
26
|
+
--bg-2: oklch(0.232 0.013 255);
|
|
27
|
+
--bg-3: oklch(0.270 0.013 252);
|
|
28
|
+
--bg-4: oklch(0.310 0.014 252);
|
|
29
|
+
|
|
30
|
+
/* Borders — crisp 1px hairlines */
|
|
31
|
+
--border-subtle: oklch(0.290 0.012 255);
|
|
32
|
+
--border-default: oklch(0.360 0.013 252);
|
|
33
|
+
--border-strong: oklch(0.450 0.014 250);
|
|
34
|
+
|
|
35
|
+
/* Text */
|
|
36
|
+
--fg-0: oklch(0.955 0.005 250);
|
|
37
|
+
--fg-1: oklch(0.790 0.008 250);
|
|
38
|
+
--fg-2: oklch(0.660 0.010 250);
|
|
39
|
+
--fg-3: oklch(0.500 0.010 250);
|
|
40
|
+
|
|
41
|
+
/* Accent — single confident indigo, hue 268 */
|
|
42
|
+
--accent: oklch(0.680 0.180 268);
|
|
43
|
+
--accent-hover: oklch(0.730 0.170 268);
|
|
44
|
+
--accent-active: oklch(0.630 0.180 268);
|
|
45
|
+
--accent-fg: oklch(0.180 0.030 268);
|
|
46
|
+
--accent-muted: oklch(0.460 0.110 268);
|
|
47
|
+
--accent-tint: color-mix(in oklab, var(--accent) 16%, transparent);
|
|
48
|
+
|
|
49
|
+
/* Status */
|
|
50
|
+
--status-success: oklch(0.760 0.150 162);
|
|
51
|
+
--status-warn: oklch(0.800 0.130 78);
|
|
52
|
+
--status-error: oklch(0.660 0.190 25);
|
|
53
|
+
--status-info: oklch(0.720 0.120 238);
|
|
54
|
+
|
|
55
|
+
/* Presence (collaborators + AI agent) */
|
|
56
|
+
--presence-online: oklch(0.740 0.160 145);
|
|
57
|
+
--presence-away: oklch(0.800 0.130 78);
|
|
58
|
+
--presence-offline: oklch(0.560 0.020 255);
|
|
59
|
+
--presence-agent: oklch(0.700 0.190 322);
|
|
60
|
+
|
|
61
|
+
/* Shadows — subtle on dark */
|
|
62
|
+
--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.40);
|
|
63
|
+
--shadow-md: 0 4px 14px rgba(0, 0, 0, 0.46);
|
|
64
|
+
--shadow-lg: 0 14px 38px rgba(0, 0, 0, 0.56);
|
|
65
|
+
|
|
66
|
+
/* Radii */
|
|
67
|
+
--radius-xs: 3px;
|
|
68
|
+
--radius-sm: 5px;
|
|
69
|
+
--radius-md: 7px;
|
|
70
|
+
--radius-lg: 10px;
|
|
71
|
+
--radius-xl: 14px;
|
|
72
|
+
--radius-pill: 999px;
|
|
73
|
+
|
|
74
|
+
/* Spacing — dense, 4px base */
|
|
75
|
+
--space-0: 0;
|
|
76
|
+
--space-1: 2px;
|
|
77
|
+
--space-2: 4px;
|
|
78
|
+
--space-3: 8px;
|
|
79
|
+
--space-4: 12px;
|
|
80
|
+
--space-5: 16px;
|
|
81
|
+
--space-6: 24px;
|
|
82
|
+
--space-7: 32px;
|
|
83
|
+
--space-8: 48px;
|
|
84
|
+
|
|
85
|
+
/* Typography */
|
|
86
|
+
--font-display: "Inter Tight", "Inter", system-ui, -apple-system, sans-serif;
|
|
87
|
+
--font-body: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;
|
|
88
|
+
--font-mono: "JetBrains Mono", "Geist Mono", ui-monospace, "SF Mono", Menlo, monospace;
|
|
89
|
+
|
|
90
|
+
--type-xs: 11px; --lh-xs: 16px;
|
|
91
|
+
--type-sm: 12px; --lh-sm: 18px;
|
|
92
|
+
--type-base: 14px; --lh-base: 20px;
|
|
93
|
+
--type-md: 16px; --lh-md: 24px;
|
|
94
|
+
--type-lg: 19px; --lh-lg: 26px;
|
|
95
|
+
--type-xl: 23px; --lh-xl: 30px;
|
|
96
|
+
--type-2xl: 28px; --lh-2xl: 34px;
|
|
97
|
+
--type-3xl: 34px; --lh-3xl: 40px;
|
|
98
|
+
|
|
99
|
+
--tracking-tight: -0.014em;
|
|
100
|
+
--tracking-wide: 0.04em;
|
|
101
|
+
|
|
102
|
+
/* Motion — crisp, snappy (Zed-fast) */
|
|
103
|
+
--dur-flip: 140ms;
|
|
104
|
+
--dur-panel: 220ms;
|
|
105
|
+
--dur-route: 280ms;
|
|
106
|
+
--dur-soft: 120ms;
|
|
107
|
+
--ease-out: cubic-bezier(0.2, 0, 0, 1);
|
|
108
|
+
--ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
|
|
109
|
+
|
|
110
|
+
/* Canvas (the signature surface — dotted infinite canvas) */
|
|
111
|
+
--canvas-bg: var(--bg-0);
|
|
112
|
+
--canvas-dot: oklch(0.340 0.012 255);
|
|
113
|
+
--canvas-grid: 24px;
|
|
114
|
+
|
|
115
|
+
/* Layout */
|
|
116
|
+
--layout-max-w: none;
|
|
117
|
+
--layout-gutter: var(--space-5);
|
|
118
|
+
|
|
119
|
+
color-scheme: dark;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/* ─── LIGHT — equal-status secondary theme (reading / handoff) ──────────────── */
|
|
123
|
+
.maude[data-theme="light"] {
|
|
124
|
+
--bg-0: oklch(0.975 0.004 255);
|
|
125
|
+
--bg-1: oklch(1.000 0 0);
|
|
126
|
+
--bg-2: oklch(0.987 0.003 255);
|
|
127
|
+
--bg-3: oklch(0.955 0.005 255);
|
|
128
|
+
--bg-4: oklch(0.928 0.006 255);
|
|
129
|
+
|
|
130
|
+
--border-subtle: oklch(0.922 0.005 255);
|
|
131
|
+
--border-default: oklch(0.868 0.007 255);
|
|
132
|
+
--border-strong: oklch(0.780 0.009 255);
|
|
133
|
+
|
|
134
|
+
--fg-0: oklch(0.225 0.015 260);
|
|
135
|
+
--fg-1: oklch(0.400 0.014 260);
|
|
136
|
+
--fg-2: oklch(0.510 0.012 260);
|
|
137
|
+
--fg-3: oklch(0.660 0.010 260);
|
|
138
|
+
|
|
139
|
+
--accent: oklch(0.520 0.195 268);
|
|
140
|
+
--accent-hover: oklch(0.470 0.195 268);
|
|
141
|
+
--accent-active: oklch(0.430 0.190 268);
|
|
142
|
+
--accent-fg: oklch(0.995 0.004 268);
|
|
143
|
+
--accent-muted: oklch(0.895 0.050 268);
|
|
144
|
+
--accent-tint: color-mix(in oklab, var(--accent) 12%, transparent);
|
|
145
|
+
|
|
146
|
+
--status-success: oklch(0.560 0.150 162);
|
|
147
|
+
--status-warn: oklch(0.640 0.140 70);
|
|
148
|
+
--status-error: oklch(0.560 0.200 25);
|
|
149
|
+
--status-info: oklch(0.530 0.150 238);
|
|
150
|
+
|
|
151
|
+
--presence-online: oklch(0.560 0.160 145);
|
|
152
|
+
--presence-away: oklch(0.640 0.140 70);
|
|
153
|
+
--presence-offline: oklch(0.700 0.010 255);
|
|
154
|
+
--presence-agent: oklch(0.520 0.190 322);
|
|
155
|
+
|
|
156
|
+
--shadow-sm: 0 1px 2px rgba(18, 20, 30, 0.08);
|
|
157
|
+
--shadow-md: 0 4px 14px rgba(18, 20, 30, 0.10);
|
|
158
|
+
--shadow-lg: 0 14px 38px rgba(18, 20, 30, 0.14);
|
|
159
|
+
|
|
160
|
+
--canvas-bg: oklch(0.965 0.004 255);
|
|
161
|
+
--canvas-dot: oklch(0.860 0.008 255);
|
|
162
|
+
|
|
163
|
+
color-scheme: light;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/* ─── Legacy `--u-*` alias bridge, RE-DECLARED under `.maude` ────────────────
|
|
167
|
+
* CRITICAL: the `--u-*` aliases in 1-tokens.css are declared at `:root`, so each
|
|
168
|
+
* `--u-x: var(--y)` is COMPUTED against the amber `:root --y` and then inherits
|
|
169
|
+
* that amber value into `.maude` — the `.maude` redefinition of `--y` does NOT
|
|
170
|
+
* re-trigger the alias. Result: every legacy surface still consuming `--u-*`
|
|
171
|
+
* (SystemView `.sv-*`, HelpModal, tour nudge, what's-new, CommentBar) rendered
|
|
172
|
+
* AMBER even inside `.maude`.
|
|
173
|
+
*
|
|
174
|
+
* Re-declaring the bridge HERE (selector `.maude`, matching the same element that
|
|
175
|
+
* carries `data-theme` + the maude `--bg-*`/`--accent`/… ladder) re-computes each
|
|
176
|
+
* alias against the MAUDE tokens — so all legacy chrome inside the shell turns
|
|
177
|
+
* maude in one shot, without rewriting each legacy component. Theme-agnostic
|
|
178
|
+
* selector: the `var(--accent)` etc. re-resolve per the element's current theme.
|
|
179
|
+
* Remove once the legacy classes are themselves ported to `.st-*`. */
|
|
180
|
+
.maude {
|
|
181
|
+
/* ─── Theme-AGNOSTIC structural tokens ────────────────────────────────────
|
|
182
|
+
* Radii / spacing / type / motion are identical in dark + light. They were
|
|
183
|
+
* originally declared ONLY in the `[data-theme="dark"]` block, so under
|
|
184
|
+
* `[data-theme="light"]` they fell through to the legacy amber `:root`
|
|
185
|
+
* (radius 2px, Berkeley Mono) — the "light mode = square corners + wrong
|
|
186
|
+
* font" bug. Declaring them here (`.maude`, which already wins over `:root`)
|
|
187
|
+
* gives BOTH themes the maude ladder; the dark block's copies are now
|
|
188
|
+
* redundant but harmless. (Plan C follow-up; [[css-var-alias-scope-trap]].) */
|
|
189
|
+
--radius-xs: 3px;
|
|
190
|
+
--radius-sm: 5px;
|
|
191
|
+
--radius-md: 7px;
|
|
192
|
+
--radius-lg: 10px;
|
|
193
|
+
--radius-xl: 14px;
|
|
194
|
+
--radius-pill: 999px;
|
|
195
|
+
|
|
196
|
+
--space-0: 0;
|
|
197
|
+
--space-1: 2px;
|
|
198
|
+
--space-2: 4px;
|
|
199
|
+
--space-3: 8px;
|
|
200
|
+
--space-4: 12px;
|
|
201
|
+
--space-5: 16px;
|
|
202
|
+
--space-6: 24px;
|
|
203
|
+
--space-7: 32px;
|
|
204
|
+
--space-8: 48px;
|
|
205
|
+
|
|
206
|
+
--font-display: "Inter Tight", "Inter", system-ui, -apple-system, sans-serif;
|
|
207
|
+
--font-body: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;
|
|
208
|
+
--font-mono: "JetBrains Mono", "Geist Mono", ui-monospace, "SF Mono", Menlo, monospace;
|
|
209
|
+
|
|
210
|
+
--type-xs: 11px; --lh-xs: 16px;
|
|
211
|
+
--type-sm: 12px; --lh-sm: 18px;
|
|
212
|
+
--type-base: 14px; --lh-base: 20px;
|
|
213
|
+
--type-md: 16px; --lh-md: 24px;
|
|
214
|
+
--type-lg: 19px; --lh-lg: 26px;
|
|
215
|
+
--type-xl: 23px; --lh-xl: 30px;
|
|
216
|
+
--type-2xl: 28px; --lh-2xl: 34px;
|
|
217
|
+
--type-3xl: 34px; --lh-3xl: 40px;
|
|
218
|
+
|
|
219
|
+
--tracking-tight: -0.014em;
|
|
220
|
+
--tracking-wide: 0.04em;
|
|
221
|
+
|
|
222
|
+
--dur-flip: 140ms;
|
|
223
|
+
--dur-panel: 220ms;
|
|
224
|
+
--dur-route: 280ms;
|
|
225
|
+
--dur-soft: 120ms;
|
|
226
|
+
--ease-out: cubic-bezier(0.2, 0, 0, 1);
|
|
227
|
+
--ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
|
|
228
|
+
|
|
229
|
+
--canvas-grid: 24px;
|
|
230
|
+
--layout-max-w: none;
|
|
231
|
+
--layout-gutter: var(--space-5);
|
|
232
|
+
|
|
233
|
+
--u-bg-0: var(--bg-0);
|
|
234
|
+
--u-bg-1: var(--bg-1);
|
|
235
|
+
--u-bg-2: var(--bg-2);
|
|
236
|
+
--u-bg-3: var(--bg-3);
|
|
237
|
+
--u-bg-4: var(--bg-4);
|
|
238
|
+
--u-bg-hover: var(--bg-3);
|
|
239
|
+
--u-bg-active: var(--bg-4);
|
|
240
|
+
--u-bg-selected: var(--accent-tint);
|
|
241
|
+
|
|
242
|
+
--u-fg-0: var(--fg-0);
|
|
243
|
+
--u-fg-1: var(--fg-1);
|
|
244
|
+
--u-fg-2: var(--fg-2);
|
|
245
|
+
--u-fg-3: var(--fg-3);
|
|
246
|
+
|
|
247
|
+
--u-border: var(--border-default);
|
|
248
|
+
--u-border-subtle: var(--border-subtle);
|
|
249
|
+
--u-border-strong: var(--border-strong);
|
|
250
|
+
|
|
251
|
+
--u-accent: var(--accent);
|
|
252
|
+
--u-accent-bg: var(--accent-tint);
|
|
253
|
+
--u-accent-line: var(--accent-hover);
|
|
254
|
+
--u-accent-strong: var(--accent-active);
|
|
255
|
+
--u-accent-fg: var(--accent-fg);
|
|
256
|
+
|
|
257
|
+
--u-status-success: var(--status-success);
|
|
258
|
+
--u-status-warn: var(--status-warn);
|
|
259
|
+
--u-status-error: var(--status-error);
|
|
260
|
+
--u-status-info: var(--status-info);
|
|
261
|
+
--u-status-live: var(--presence-online);
|
|
262
|
+
|
|
263
|
+
--u-r-xs: var(--radius-xs);
|
|
264
|
+
--u-r-sm: var(--radius-sm);
|
|
265
|
+
--u-r-md: var(--radius-md);
|
|
266
|
+
--u-r-lg: var(--radius-lg);
|
|
267
|
+
--u-r-pill: var(--radius-pill);
|
|
268
|
+
|
|
269
|
+
--u-s-1: var(--space-2);
|
|
270
|
+
--u-s-2: var(--space-3);
|
|
271
|
+
--u-s-3: var(--space-4);
|
|
272
|
+
--u-s-4: var(--space-5);
|
|
273
|
+
--u-s-5: var(--space-6);
|
|
274
|
+
|
|
275
|
+
--u-font-display: var(--font-display);
|
|
276
|
+
--u-font-body: var(--font-body);
|
|
277
|
+
--u-font-sans: var(--font-body);
|
|
278
|
+
--u-font-mono: var(--font-mono);
|
|
279
|
+
|
|
280
|
+
--u-mono-cell-bg: var(--bg-2);
|
|
281
|
+
--u-mono-cell-fg: var(--fg-0);
|
|
282
|
+
--u-mono-rule: var(--border-subtle);
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
/* Reduced-motion: collapse durations everywhere (a11y invariant). */
|
|
286
|
+
@media (prefers-reduced-motion: reduce) {
|
|
287
|
+
.maude[data-theme="dark"],
|
|
288
|
+
.maude[data-theme="light"] {
|
|
289
|
+
--dur-flip: 1ms;
|
|
290
|
+
--dur-panel: 1ms;
|
|
291
|
+
--dur-route: 1ms;
|
|
292
|
+
--dur-soft: 1ms;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
}
|