@ethlete/cli 3.0.0-next.26 → 3.0.0-next.28
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/CHANGELOG.md +481 -0
- package/build-info.json +1 -0
- package/design/arrow-anchor.ts +55 -0
- package/design/define-call.ts +75 -30
- package/design/define-part.ts +64 -4
- package/design/icon-sheet.ts +1 -1
- package/design/interaction-rows.ts +13 -6
- package/design/mark-part.ts +51 -1
- package/design/token-sheet.ts +1 -1
- package/design/web/frame-fit.ts +7 -0
- package/design/web/frame-surfaces.ts +294 -0
- package/design/web/frame.ts +69 -15
- package/design/web/surface-interactive.css +42 -0
- package/design/with-action.ts +29 -0
- package/package.json +3 -1
- package/src/index.js +9 -1
- package/src/index.js.map +1 -1
- package/src/lib/api/compose.js +3 -2
- package/src/lib/api/compose.js.map +1 -1
- package/src/lib/api/git.js +2 -1
- package/src/lib/api/git.js.map +1 -1
- package/src/lib/api/setup.js +2 -2
- package/src/lib/api/setup.js.map +1 -1
- package/src/lib/design/asset-shot.js +4 -4
- package/src/lib/design/asset-shot.js.map +1 -1
- package/src/lib/design/blank-png.d.ts +2 -0
- package/src/lib/design/blank-png.js +28 -0
- package/src/lib/design/blank-png.js.map +1 -0
- package/src/lib/design/build-watch.d.ts +26 -0
- package/src/lib/design/build-watch.js +138 -0
- package/src/lib/design/build-watch.js.map +1 -0
- package/src/lib/design/cache-entry.d.ts +8 -0
- package/src/lib/design/cache-entry.js +30 -0
- package/src/lib/design/cache-entry.js.map +1 -0
- package/src/lib/design/calls-tsconfig.js +20 -13
- package/src/lib/design/calls-tsconfig.js.map +1 -1
- package/src/lib/design/calls.js +3 -3
- package/src/lib/design/calls.js.map +1 -1
- package/src/lib/design/changed-parts.d.ts +1 -1
- package/src/lib/design/check.d.ts +2 -0
- package/src/lib/design/check.js +217 -24
- package/src/lib/design/check.js.map +1 -1
- package/src/lib/design/code-hash.d.ts +30 -0
- package/src/lib/design/code-hash.js +118 -0
- package/src/lib/design/code-hash.js.map +1 -0
- package/src/lib/design/commit-hunks.d.ts +22 -0
- package/src/lib/design/commit-hunks.js +173 -0
- package/src/lib/design/commit-hunks.js.map +1 -0
- package/src/lib/design/design-command.d.ts +2 -0
- package/src/lib/design/design-command.js +271 -27
- package/src/lib/design/design-command.js.map +1 -1
- package/src/lib/design/{paths.d.ts → design-config.d.ts} +34 -28
- package/src/lib/design/design-config.js +35 -0
- package/src/lib/design/design-config.js.map +1 -0
- package/src/lib/design/design-lint.d.ts +68 -0
- package/src/lib/design/design-lint.js +183 -0
- package/src/lib/design/design-lint.js.map +1 -0
- package/src/lib/design/draw-ledger.d.ts +6 -0
- package/src/lib/design/draw-ledger.js +10 -0
- package/src/lib/design/draw-ledger.js.map +1 -1
- package/src/lib/design/force-interactions.d.ts +3 -1
- package/src/lib/design/force-interactions.js +8 -4
- package/src/lib/design/force-interactions.js.map +1 -1
- package/src/lib/design/generated-stylesheets.d.ts +1 -1
- package/src/lib/design/generated-stylesheets.js +2 -2
- package/src/lib/design/generated-stylesheets.js.map +1 -1
- package/src/lib/design/git-top.d.ts +5 -0
- package/src/lib/design/git-top.js +16 -0
- package/src/lib/design/git-top.js.map +1 -0
- package/src/lib/design/hooks-problem.d.ts +2 -0
- package/src/lib/design/hooks-problem.js +23 -0
- package/src/lib/design/hooks-problem.js.map +1 -0
- package/src/lib/design/inbox-command.js +9 -5
- package/src/lib/design/inbox-command.js.map +1 -1
- package/src/lib/design/index.d.ts +4 -1
- package/src/lib/design/index.js +4 -1
- package/src/lib/design/index.js.map +1 -1
- package/src/lib/design/is-running.d.ts +1 -0
- package/src/lib/design/is-running.js +14 -0
- package/src/lib/design/is-running.js.map +1 -0
- package/src/lib/design/legacy.js +3 -3
- package/src/lib/design/legacy.js.map +1 -1
- package/src/lib/design/mcp-command.d.ts +5 -1
- package/src/lib/design/mcp-command.js +27 -16
- package/src/lib/design/mcp-command.js.map +1 -1
- package/src/lib/design/merge-compare.d.ts +10 -2
- package/src/lib/design/merge-compare.js +63 -11
- package/src/lib/design/merge-compare.js.map +1 -1
- package/src/lib/design/motion-command.js +4 -4
- package/src/lib/design/motion-command.js.map +1 -1
- package/src/lib/design/motion-shot.js +3 -2
- package/src/lib/design/motion-shot.js.map +1 -1
- package/src/lib/design/new-call.js +22 -13
- package/src/lib/design/new-call.js.map +1 -1
- package/src/lib/design/old-shot-folders.d.ts +2 -0
- package/src/lib/design/old-shot-folders.js +26 -0
- package/src/lib/design/old-shot-folders.js.map +1 -0
- package/src/lib/design/package-root.d.ts +21 -0
- package/src/lib/design/package-root.js +79 -0
- package/src/lib/design/package-root.js.map +1 -0
- package/src/lib/design/parent-watch.d.ts +7 -0
- package/src/lib/design/parent-watch.js +23 -0
- package/src/lib/design/parent-watch.js.map +1 -0
- package/src/lib/design/part-marks.d.ts +3 -2
- package/src/lib/design/part-marks.js +15 -7
- package/src/lib/design/part-marks.js.map +1 -1
- package/src/lib/design/phase-timing.d.ts +5 -0
- package/src/lib/design/phase-timing.js +27 -0
- package/src/lib/design/phase-timing.js.map +1 -0
- package/src/lib/design/physical-cores.d.ts +12 -0
- package/src/lib/design/physical-cores.js +43 -0
- package/src/lib/design/physical-cores.js.map +1 -0
- package/src/lib/design/product-command.d.ts +1 -1
- package/src/lib/design/product-command.js +16 -18
- package/src/lib/design/product-command.js.map +1 -1
- package/src/lib/design/push-status.d.ts +30 -0
- package/src/lib/design/push-status.js +122 -0
- package/src/lib/design/push-status.js.map +1 -0
- package/src/lib/design/ready-shots.d.ts +21 -12
- package/src/lib/design/ready-shots.js +79 -44
- package/src/lib/design/ready-shots.js.map +1 -1
- package/src/lib/design/render-packages.d.ts +7 -18
- package/src/lib/design/render-packages.js +24 -63
- package/src/lib/design/render-packages.js.map +1 -1
- package/src/lib/design/render-worker.js +24 -6
- package/src/lib/design/render-worker.js.map +1 -1
- package/src/lib/design/render.d.ts +26 -3
- package/src/lib/design/render.js +52 -13
- package/src/lib/design/render.js.map +1 -1
- package/src/lib/design/resident/client.d.ts +52 -0
- package/src/lib/design/resident/client.js +263 -0
- package/src/lib/design/resident/client.js.map +1 -0
- package/src/lib/design/resident/discovery.d.ts +21 -0
- package/src/lib/design/resident/discovery.js +63 -0
- package/src/lib/design/resident/discovery.js.map +1 -0
- package/src/lib/design/resident/resident-process.d.ts +19 -0
- package/src/lib/design/resident/resident-process.js +189 -0
- package/src/lib/design/resident/resident-process.js.map +1 -0
- package/src/lib/design/resident/server.d.ts +52 -0
- package/src/lib/design/resident/server.js +212 -0
- package/src/lib/design/resident/server.js.map +1 -0
- package/src/lib/design/run-abort.d.ts +9 -0
- package/src/lib/design/run-abort.js +45 -0
- package/src/lib/design/run-abort.js.map +1 -0
- package/src/lib/design/run-deadline.d.ts +19 -0
- package/src/lib/design/run-deadline.js +104 -0
- package/src/lib/design/run-deadline.js.map +1 -0
- package/src/lib/design/run-yield.d.ts +8 -0
- package/src/lib/design/run-yield.js +43 -0
- package/src/lib/design/run-yield.js.map +1 -0
- package/src/lib/design/serve-state.d.ts +15 -0
- package/src/lib/design/serve-state.js +56 -0
- package/src/lib/design/serve-state.js.map +1 -0
- package/src/lib/design/serve.d.ts +41 -3
- package/src/lib/design/serve.js +272 -54
- package/src/lib/design/serve.js.map +1 -1
- package/src/lib/design/server-identity.d.ts +40 -0
- package/src/lib/design/server-identity.js +71 -0
- package/src/lib/design/server-identity.js.map +1 -0
- package/src/lib/design/settle-frames.d.ts +4 -0
- package/src/lib/design/settle-frames.js +22 -0
- package/src/lib/design/settle-frames.js.map +1 -0
- package/src/lib/design/shot-board.d.ts +26 -0
- package/src/lib/design/shot-board.js +80 -0
- package/src/lib/design/shot-board.js.map +1 -0
- package/src/lib/design/shot-command.d.ts +26 -5
- package/src/lib/design/shot-command.js +143 -50
- package/src/lib/design/shot-command.js.map +1 -1
- package/src/lib/design/shot-store.d.ts +29 -3
- package/src/lib/design/shot-store.js +206 -36
- package/src/lib/design/shot-store.js.map +1 -1
- package/src/lib/design/shot.d.ts +60 -2
- package/src/lib/design/shot.js +238 -28
- package/src/lib/design/shot.js.map +1 -1
- package/src/lib/design/sketch-at.js +2 -1
- package/src/lib/design/sketch-at.js.map +1 -1
- package/src/lib/design/sketch-command.d.ts +19 -1
- package/src/lib/design/sketch-command.js +664 -159
- package/src/lib/design/sketch-command.js.map +1 -1
- package/src/lib/design/ssr-shims.d.ts +1 -0
- package/src/lib/design/ssr-shims.js +3 -3
- package/src/lib/design/ssr-shims.js.map +1 -1
- package/src/lib/design/stale-cli-dist.d.ts +11 -0
- package/src/lib/design/stale-cli-dist.js +56 -0
- package/src/lib/design/stale-cli-dist.js.map +1 -0
- package/src/lib/design/stamp.d.ts +23 -1
- package/src/lib/design/stamp.js +56 -9
- package/src/lib/design/stamp.js.map +1 -1
- package/src/lib/design/started-by-studio.d.ts +1 -0
- package/src/lib/design/started-by-studio.js +6 -0
- package/src/lib/design/started-by-studio.js.map +1 -0
- package/src/lib/design/status.d.ts +1 -1
- package/src/lib/design/status.js +15 -4
- package/src/lib/design/status.js.map +1 -1
- package/src/lib/design/studio-api.d.ts +21 -10
- package/src/lib/design/studio-api.js +192 -88
- package/src/lib/design/studio-api.js.map +1 -1
- package/src/lib/design/system/accepted-pictures.d.ts +69 -0
- package/src/lib/design/system/accepted-pictures.js +346 -0
- package/src/lib/design/system/accepted-pictures.js.map +1 -0
- package/src/lib/design/system/action-cache.d.ts +45 -0
- package/src/lib/design/system/action-cache.js +72 -0
- package/src/lib/design/system/action-cache.js.map +1 -0
- package/src/lib/design/system/action-lost.d.ts +61 -0
- package/src/lib/design/system/action-lost.js +116 -0
- package/src/lib/design/system/action-lost.js.map +1 -0
- package/src/lib/design/system/action-press.d.ts +29 -0
- package/src/lib/design/system/action-press.js +88 -0
- package/src/lib/design/system/action-press.js.map +1 -0
- package/src/lib/design/system/action-undeclared.d.ts +34 -0
- package/src/lib/design/system/action-undeclared.js +81 -0
- package/src/lib/design/system/action-undeclared.js.map +1 -0
- package/src/lib/design/system/actions-command.d.ts +108 -0
- package/src/lib/design/system/actions-command.js +816 -0
- package/src/lib/design/system/actions-command.js.map +1 -0
- package/src/lib/design/system/actions.d.ts +181 -0
- package/src/lib/design/system/actions.js +333 -0
- package/src/lib/design/system/actions.js.map +1 -0
- package/src/lib/design/system/anti-alias.d.ts +2 -0
- package/src/lib/design/system/anti-alias.js +11 -0
- package/src/lib/design/system/anti-alias.js.map +1 -0
- package/src/lib/design/system/app-files.d.ts +10 -0
- package/src/lib/design/system/app-files.js +175 -0
- package/src/lib/design/system/app-files.js.map +1 -0
- package/src/lib/design/system/arrow-anchor.d.ts +9 -0
- package/src/lib/design/system/arrow-anchor.js +40 -0
- package/src/lib/design/system/arrow-anchor.js.map +1 -0
- package/src/lib/design/system/base-issues.d.ts +28 -0
- package/src/lib/design/system/base-issues.js +80 -0
- package/src/lib/design/system/base-issues.js.map +1 -0
- package/src/lib/design/system/base.d.ts +1 -1
- package/src/lib/design/system/base.js +2 -2
- package/src/lib/design/system/base.js.map +1 -1
- package/src/lib/design/system/baseline-history.d.ts +13 -0
- package/src/lib/design/system/baseline-history.js +40 -0
- package/src/lib/design/system/baseline-history.js.map +1 -0
- package/src/lib/design/system/bespoke-controls.d.ts +33 -0
- package/src/lib/design/system/bespoke-controls.js +149 -0
- package/src/lib/design/system/bespoke-controls.js.map +1 -0
- package/src/lib/design/system/build-ready-contract.d.ts +33 -0
- package/src/lib/design/system/build-ready-contract.js +18 -0
- package/src/lib/design/system/build-ready-contract.js.map +1 -0
- package/src/lib/design/system/build-running.d.ts +13 -0
- package/src/lib/design/system/build-running.js +48 -0
- package/src/lib/design/system/build-running.js.map +1 -0
- package/src/lib/design/system/check-record.d.ts +18 -0
- package/src/lib/design/system/check-record.js +47 -0
- package/src/lib/design/system/check-record.js.map +1 -0
- package/src/lib/design/system/check-rules.d.ts +1 -0
- package/src/lib/design/system/check-rules.js +100 -0
- package/src/lib/design/system/check-rules.js.map +1 -0
- package/src/lib/design/system/check-system.d.ts +83 -7
- package/src/lib/design/system/check-system.js +647 -68
- package/src/lib/design/system/check-system.js.map +1 -1
- package/src/lib/design/system/comments/comment.d.ts +4 -1
- package/src/lib/design/system/comments/comment.js +13 -4
- package/src/lib/design/system/comments/comment.js.map +1 -1
- package/src/lib/design/system/comments/inbox.d.ts +1 -1
- package/src/lib/design/system/comments/inbox.js +2 -2
- package/src/lib/design/system/comments/inbox.js.map +1 -1
- package/src/lib/design/system/compare-cache.d.ts +20 -0
- package/src/lib/design/system/compare-cache.js +92 -0
- package/src/lib/design/system/compare-cache.js.map +1 -0
- package/src/lib/design/system/compare-command.d.ts +150 -0
- package/src/lib/design/system/compare-command.js +580 -0
- package/src/lib/design/system/compare-command.js.map +1 -0
- package/src/lib/design/system/complete-command.js +1 -1
- package/src/lib/design/system/complete-command.js.map +1 -1
- package/src/lib/design/system/complete.d.ts +63 -2
- package/src/lib/design/system/complete.js +281 -71
- package/src/lib/design/system/complete.js.map +1 -1
- package/src/lib/design/system/component-outputs.d.ts +20 -0
- package/src/lib/design/system/component-outputs.js +86 -0
- package/src/lib/design/system/component-outputs.js.map +1 -0
- package/src/lib/design/system/contrast-check.d.ts +1 -1
- package/src/lib/design/system/contrast-check.js +14 -3
- package/src/lib/design/system/contrast-check.js.map +1 -1
- package/src/lib/design/system/decision-refs.d.ts +5 -0
- package/src/lib/design/system/decision-refs.js +21 -0
- package/src/lib/design/system/decision-refs.js.map +1 -0
- package/src/lib/design/system/demo-backdrop.d.ts +11 -0
- package/src/lib/design/system/demo-backdrop.js +41 -0
- package/src/lib/design/system/demo-backdrop.js.map +1 -0
- package/src/lib/design/system/design-hash.d.ts +52 -0
- package/src/lib/design/system/design-hash.js +132 -0
- package/src/lib/design/system/design-hash.js.map +1 -0
- package/src/lib/design/system/disabled-interaction.d.ts +8 -0
- package/src/lib/design/system/disabled-interaction.js +37 -0
- package/src/lib/design/system/disabled-interaction.js.map +1 -0
- package/src/lib/design/system/dom-command.d.ts +36 -0
- package/src/lib/design/system/dom-command.js +178 -0
- package/src/lib/design/system/dom-command.js.map +1 -0
- package/src/lib/design/system/drawn-open-points.d.ts +26 -4
- package/src/lib/design/system/drawn-open-points.js +65 -14
- package/src/lib/design/system/drawn-open-points.js.map +1 -1
- package/src/lib/design/system/dropped-props.d.ts +39 -0
- package/src/lib/design/system/dropped-props.js +271 -0
- package/src/lib/design/system/dropped-props.js.map +1 -0
- package/src/lib/design/system/embedded-actions.d.ts +21 -0
- package/src/lib/design/system/embedded-actions.js +37 -0
- package/src/lib/design/system/embedded-actions.js.map +1 -0
- package/src/lib/design/system/exceptions.js +2 -1
- package/src/lib/design/system/exceptions.js.map +1 -1
- package/src/lib/design/system/flows/flow.js +2 -1
- package/src/lib/design/system/flows/flow.js.map +1 -1
- package/src/lib/design/system/frozen-animations.d.ts +13 -0
- package/src/lib/design/system/frozen-animations.js +51 -0
- package/src/lib/design/system/frozen-animations.js.map +1 -0
- package/src/lib/design/system/grid-report.d.ts +5 -0
- package/src/lib/design/system/grid-report.js +78 -0
- package/src/lib/design/system/grid-report.js.map +1 -0
- package/src/lib/design/system/handoff.js +2 -1
- package/src/lib/design/system/handoff.js.map +1 -1
- package/src/lib/design/system/harness-build-cache.d.ts +49 -0
- package/src/lib/design/system/harness-build-cache.js +188 -0
- package/src/lib/design/system/harness-build-cache.js.map +1 -0
- package/src/lib/design/system/harness-command.d.ts +7 -0
- package/src/lib/design/system/harness-command.js +51 -0
- package/src/lib/design/system/harness-command.js.map +1 -0
- package/src/lib/design/system/harness-config.d.ts +9 -0
- package/src/lib/design/system/harness-config.js +65 -0
- package/src/lib/design/system/harness-config.js.map +1 -0
- package/src/lib/design/system/harness-inputs.d.ts +17 -0
- package/src/lib/design/system/harness-inputs.js +160 -0
- package/src/lib/design/system/harness-inputs.js.map +1 -0
- package/src/lib/design/system/harness-map.d.ts +44 -0
- package/src/lib/design/system/harness-map.js +126 -0
- package/src/lib/design/system/harness-map.js.map +1 -0
- package/src/lib/design/system/harness-samples.d.ts +20 -0
- package/src/lib/design/system/harness-samples.js +92 -0
- package/src/lib/design/system/harness-samples.js.map +1 -0
- package/src/lib/design/system/harness-server.d.ts +51 -0
- package/src/lib/design/system/harness-server.js +306 -0
- package/src/lib/design/system/harness-server.js.map +1 -0
- package/src/lib/design/system/harness-shot.d.ts +78 -0
- package/src/lib/design/system/harness-shot.js +349 -0
- package/src/lib/design/system/harness-shot.js.map +1 -0
- package/src/lib/design/system/harness-watch.d.ts +79 -0
- package/src/lib/design/system/harness-watch.js +334 -0
- package/src/lib/design/system/harness-watch.js.map +1 -0
- package/src/lib/design/system/implementation-baseline.d.ts +20 -0
- package/src/lib/design/system/implementation-baseline.js +44 -0
- package/src/lib/design/system/implementation-baseline.js.map +1 -0
- package/src/lib/design/system/imports.js +14 -1
- package/src/lib/design/system/imports.js.map +1 -1
- package/src/lib/design/system/in-order-at-once.d.ts +6 -0
- package/src/lib/design/system/in-order-at-once.js +28 -0
- package/src/lib/design/system/in-order-at-once.js.map +1 -0
- package/src/lib/design/system/inventory-approval.js +2 -1
- package/src/lib/design/system/inventory-approval.js.map +1 -1
- package/src/lib/design/system/inventory.d.ts +13 -4
- package/src/lib/design/system/inventory.js +36 -7
- package/src/lib/design/system/inventory.js.map +1 -1
- package/src/lib/design/system/leftover-gate-files.d.ts +2 -0
- package/src/lib/design/system/leftover-gate-files.js +15 -0
- package/src/lib/design/system/leftover-gate-files.js.map +1 -0
- package/src/lib/design/system/lib-build-lock.d.ts +18 -0
- package/src/lib/design/system/lib-build-lock.js +111 -0
- package/src/lib/design/system/lib-build-lock.js.map +1 -0
- package/src/lib/design/system/link-free.d.ts +12 -0
- package/src/lib/design/system/link-free.js +125 -0
- package/src/lib/design/system/link-free.js.map +1 -0
- package/src/lib/design/system/list-system.d.ts +8 -8
- package/src/lib/design/system/list-system.js +19 -80
- package/src/lib/design/system/list-system.js.map +1 -1
- package/src/lib/design/system/live-actions.d.ts +121 -0
- package/src/lib/design/system/live-actions.js +674 -0
- package/src/lib/design/system/live-actions.js.map +1 -0
- package/src/lib/design/system/live-compare.d.ts +136 -0
- package/src/lib/design/system/live-compare.js +441 -0
- package/src/lib/design/system/live-compare.js.map +1 -0
- package/src/lib/design/system/live-uncovered.d.ts +45 -0
- package/src/lib/design/system/live-uncovered.js +158 -0
- package/src/lib/design/system/live-uncovered.js.map +1 -0
- package/src/lib/design/system/nested-scroll.d.ts +7 -0
- package/src/lib/design/system/nested-scroll.js +25 -0
- package/src/lib/design/system/nested-scroll.js.map +1 -0
- package/src/lib/design/system/no-verdict.d.ts +13 -0
- package/src/lib/design/system/no-verdict.js +17 -0
- package/src/lib/design/system/no-verdict.js.map +1 -0
- package/src/lib/design/system/notes/note.js +2 -1
- package/src/lib/design/system/notes/note.js.map +1 -1
- package/src/lib/design/system/occluded.d.ts +13 -0
- package/src/lib/design/system/occluded.js +111 -0
- package/src/lib/design/system/occluded.js.map +1 -0
- package/src/lib/design/system/off-centre.d.ts +11 -0
- package/src/lib/design/system/off-centre.js +74 -0
- package/src/lib/design/system/off-centre.js.map +1 -0
- package/src/lib/design/system/open-points-cache.d.ts +11 -0
- package/src/lib/design/system/open-points-cache.js +27 -0
- package/src/lib/design/system/open-points-cache.js.map +1 -0
- package/src/lib/design/system/open-points-runner.d.ts +43 -0
- package/src/lib/design/system/open-points-runner.js +119 -0
- package/src/lib/design/system/open-points-runner.js.map +1 -0
- package/src/lib/design/system/open-points-worker.d.ts +1 -0
- package/src/lib/design/system/open-points-worker.js +28 -0
- package/src/lib/design/system/open-points-worker.js.map +1 -0
- package/src/lib/design/system/open-points.d.ts +24 -6
- package/src/lib/design/system/open-points.js +59 -30
- package/src/lib/design/system/open-points.js.map +1 -1
- package/src/lib/design/system/part-build-ready.d.ts +45 -0
- package/src/lib/design/system/part-build-ready.js +135 -0
- package/src/lib/design/system/part-build-ready.js.map +1 -0
- package/src/lib/design/system/part-command.js +2 -9
- package/src/lib/design/system/part-command.js.map +1 -1
- package/src/lib/design/system/part-compare.d.ts +139 -0
- package/src/lib/design/system/part-compare.js +501 -0
- package/src/lib/design/system/part-compare.js.map +1 -0
- package/src/lib/design/system/part-picture-cache.d.ts +23 -0
- package/src/lib/design/system/part-picture-cache.js +68 -0
- package/src/lib/design/system/part-picture-cache.js.map +1 -0
- package/src/lib/design/system/part-ready.d.ts +71 -7
- package/src/lib/design/system/part-ready.js +128 -19
- package/src/lib/design/system/part-ready.js.map +1 -1
- package/src/lib/design/system/part-task.d.ts +167 -0
- package/src/lib/design/system/part-task.js +331 -0
- package/src/lib/design/system/part-task.js.map +1 -0
- package/src/lib/design/system/pixel-cache.d.ts +16 -0
- package/src/lib/design/system/pixel-cache.js +79 -0
- package/src/lib/design/system/pixel-cache.js.map +1 -0
- package/src/lib/design/system/pointer-focus.d.ts +89 -0
- package/src/lib/design/system/pointer-focus.js +175 -0
- package/src/lib/design/system/pointer-focus.js.map +1 -0
- package/src/lib/design/system/prettier.d.ts +10 -0
- package/src/lib/design/system/prettier.js +37 -0
- package/src/lib/design/system/prettier.js.map +1 -0
- package/src/lib/design/system/problem.d.ts +6 -0
- package/src/lib/design/system/product.js +2 -2
- package/src/lib/design/system/product.js.map +1 -1
- package/src/lib/design/system/reach.d.ts +12 -0
- package/src/lib/design/system/reach.js +186 -0
- package/src/lib/design/system/reach.js.map +1 -0
- package/src/lib/design/system/reachable-controls.d.ts +6 -0
- package/src/lib/design/system/reachable-controls.js +19 -0
- package/src/lib/design/system/reachable-controls.js.map +1 -0
- package/src/lib/design/system/reachable-files.d.ts +14 -0
- package/src/lib/design/system/reachable-files.js +101 -0
- package/src/lib/design/system/reachable-files.js.map +1 -0
- package/src/lib/design/system/reached-state.d.ts +23 -0
- package/src/lib/design/system/reached-state.js +53 -0
- package/src/lib/design/system/reached-state.js.map +1 -0
- package/src/lib/design/system/read-open-points.d.ts +9 -3
- package/src/lib/design/system/read-open-points.js +38 -9
- package/src/lib/design/system/read-open-points.js.map +1 -1
- package/src/lib/design/system/ready-command.d.ts +6 -2
- package/src/lib/design/system/ready-command.js +52 -15
- package/src/lib/design/system/ready-command.js.map +1 -1
- package/src/lib/design/system/record-settled.d.ts +24 -0
- package/src/lib/design/system/record-settled.js +50 -0
- package/src/lib/design/system/record-settled.js.map +1 -0
- package/src/lib/design/system/render-check.d.ts +68 -1
- package/src/lib/design/system/render-check.js +427 -114
- package/src/lib/design/system/render-check.js.map +1 -1
- package/src/lib/design/system/render-issue-key.d.ts +9 -0
- package/src/lib/design/system/render-issue-key.js +27 -0
- package/src/lib/design/system/render-issue-key.js.map +1 -0
- package/src/lib/design/system/resolve-product.d.ts +4 -1
- package/src/lib/design/system/resolve-product.js +19 -3
- package/src/lib/design/system/resolve-product.js.map +1 -1
- package/src/lib/design/system/rule-baseline.d.ts +53 -0
- package/src/lib/design/system/rule-baseline.js +124 -0
- package/src/lib/design/system/rule-baseline.js.map +1 -0
- package/src/lib/design/system/rule-skips.d.ts +20 -0
- package/src/lib/design/system/rule-skips.js +36 -0
- package/src/lib/design/system/rule-skips.js.map +1 -0
- package/src/lib/design/system/rules/app-spec.d.ts +30 -0
- package/src/lib/design/system/rules/app-spec.js +87 -0
- package/src/lib/design/system/rules/app-spec.js.map +1 -0
- package/src/lib/design/system/rules/canonical-class.d.ts +6 -0
- package/src/lib/design/system/rules/canonical-class.js +92 -113
- package/src/lib/design/system/rules/canonical-class.js.map +1 -1
- package/src/lib/design/system/rules/capability-place.d.ts +46 -0
- package/src/lib/design/system/rules/capability-place.js +129 -0
- package/src/lib/design/system/rules/capability-place.js.map +1 -0
- package/src/lib/design/system/rules/command-text.d.ts +7 -0
- package/src/lib/design/system/rules/command-text.js +72 -0
- package/src/lib/design/system/rules/command-text.js.map +1 -0
- package/src/lib/design/system/rules/denied-class.d.ts +9 -0
- package/src/lib/design/system/rules/denied-class.js +121 -0
- package/src/lib/design/system/rules/denied-class.js.map +1 -0
- package/src/lib/design/system/rules/design-coverage.d.ts +30 -0
- package/src/lib/design/system/rules/design-coverage.js +205 -0
- package/src/lib/design/system/rules/design-coverage.js.map +1 -0
- package/src/lib/design/system/rules/exemptions.d.ts +18 -0
- package/src/lib/design/system/rules/exemptions.js +18 -0
- package/src/lib/design/system/rules/exemptions.js.map +1 -0
- package/src/lib/design/system/rules/flow.js +1 -1
- package/src/lib/design/system/rules/flow.js.map +1 -1
- package/src/lib/design/system/rules/glued-interpolation.d.ts +8 -0
- package/src/lib/design/system/rules/glued-interpolation.js +77 -0
- package/src/lib/design/system/rules/glued-interpolation.js.map +1 -0
- package/src/lib/design/system/rules/hard-coded-colour.js +2 -1
- package/src/lib/design/system/rules/hard-coded-colour.js.map +1 -1
- package/src/lib/design/system/rules/implemented-components.d.ts +22 -0
- package/src/lib/design/system/rules/implemented-components.js +45 -0
- package/src/lib/design/system/rules/implemented-components.js.map +1 -0
- package/src/lib/design/system/rules/implements-unrendered.d.ts +13 -0
- package/src/lib/design/system/rules/implements-unrendered.js +63 -0
- package/src/lib/design/system/rules/implements-unrendered.js.map +1 -0
- package/src/lib/design/system/rules/implements.d.ts +2 -1
- package/src/lib/design/system/rules/implements.js +26 -21
- package/src/lib/design/system/rules/implements.js.map +1 -1
- package/src/lib/design/system/rules/inline-svg.js +4 -1
- package/src/lib/design/system/rules/inline-svg.js.map +1 -1
- package/src/lib/design/system/rules/inline-ui-in-page-open.d.ts +13 -0
- package/src/lib/design/system/rules/inline-ui-in-page-open.js +5 -0
- package/src/lib/design/system/rules/inline-ui-in-page-open.js.map +1 -0
- package/src/lib/design/system/rules/inline-ui-in-page.d.ts +18 -0
- package/src/lib/design/system/rules/inline-ui-in-page.js +123 -0
- package/src/lib/design/system/rules/inline-ui-in-page.js.map +1 -0
- package/src/lib/design/system/rules/inline-ui.d.ts +16 -0
- package/src/lib/design/system/rules/inline-ui.js +100 -0
- package/src/lib/design/system/rules/inline-ui.js.map +1 -0
- package/src/lib/design/system/rules/motion.d.ts +1 -1
- package/src/lib/design/system/rules/motion.js +31 -17
- package/src/lib/design/system/rules/motion.js.map +1 -1
- package/src/lib/design/system/rules/native-title.d.ts +7 -0
- package/src/lib/design/system/rules/native-title.js +74 -0
- package/src/lib/design/system/rules/native-title.js.map +1 -0
- package/src/lib/design/system/rules/option-values.d.ts +1 -1
- package/src/lib/design/system/rules/orphan-endpoint-known.d.ts +12 -0
- package/src/lib/design/system/rules/orphan-endpoint-known.js +20 -0
- package/src/lib/design/system/rules/orphan-endpoint-known.js.map +1 -0
- package/src/lib/design/system/rules/orphan-endpoint.d.ts +23 -0
- package/src/lib/design/system/rules/orphan-endpoint.js +166 -0
- package/src/lib/design/system/rules/orphan-endpoint.js.map +1 -0
- package/src/lib/design/system/rules/part-rewrite.d.ts +13 -0
- package/src/lib/design/system/rules/part-rewrite.js +125 -0
- package/src/lib/design/system/rules/part-rewrite.js.map +1 -0
- package/src/lib/design/system/rules/pending-state.d.ts +39 -0
- package/src/lib/design/system/rules/pending-state.js +289 -0
- package/src/lib/design/system/rules/pending-state.js.map +1 -0
- package/src/lib/design/system/rules/sample-default-known.d.ts +5 -0
- package/src/lib/design/system/rules/sample-default-known.js +17 -0
- package/src/lib/design/system/rules/sample-default-known.js.map +1 -0
- package/src/lib/design/system/rules/sample-default.d.ts +22 -0
- package/src/lib/design/system/rules/sample-default.js +92 -0
- package/src/lib/design/system/rules/sample-default.js.map +1 -0
- package/src/lib/design/system/rules/sdk-attribute-value.d.ts +10 -0
- package/src/lib/design/system/rules/sdk-attribute-value.js +78 -0
- package/src/lib/design/system/rules/sdk-attribute-value.js.map +1 -0
- package/src/lib/design/system/rules/sdk-private-var.d.ts +9 -0
- package/src/lib/design/system/rules/sdk-private-var.js +54 -0
- package/src/lib/design/system/rules/sdk-private-var.js.map +1 -0
- package/src/lib/design/system/rules/skips.d.ts +4 -0
- package/src/lib/design/system/rules/skips.js +27 -0
- package/src/lib/design/system/rules/skips.js.map +1 -0
- package/src/lib/design/system/rules/stale-replace.js +5 -0
- package/src/lib/design/system/rules/stale-replace.js.map +1 -1
- package/src/lib/design/system/rules/state-in-component.d.ts +16 -0
- package/src/lib/design/system/rules/state-in-component.js +101 -0
- package/src/lib/design/system/rules/state-in-component.js.map +1 -0
- package/src/lib/design/system/rules/tailwind-classes.d.ts +52 -0
- package/src/lib/design/system/rules/tailwind-classes.js +237 -0
- package/src/lib/design/system/rules/tailwind-classes.js.map +1 -0
- package/src/lib/design/system/rules/token-selectors.js +10 -3
- package/src/lib/design/system/rules/token-selectors.js.map +1 -1
- package/src/lib/design/system/rules/top-level-await.d.ts +9 -0
- package/src/lib/design/system/rules/top-level-await.js +62 -0
- package/src/lib/design/system/rules/top-level-await.js.map +1 -0
- package/src/lib/design/system/rules/unbound-input-known.d.ts +7 -0
- package/src/lib/design/system/rules/unbound-input-known.js +44 -0
- package/src/lib/design/system/rules/unbound-input-known.js.map +1 -0
- package/src/lib/design/system/rules/unbound-input.d.ts +24 -0
- package/src/lib/design/system/rules/unbound-input.js +67 -0
- package/src/lib/design/system/rules/unbound-input.js.map +1 -0
- package/src/lib/design/system/rules/uncovered-region.d.ts +13 -0
- package/src/lib/design/system/rules/uncovered-region.js +36 -0
- package/src/lib/design/system/rules/uncovered-region.js.map +1 -0
- package/src/lib/design/system/rules/undefined-class.d.ts +9 -0
- package/src/lib/design/system/rules/undefined-class.js +41 -0
- package/src/lib/design/system/rules/undefined-class.js.map +1 -0
- package/src/lib/design/system/rules/undefined-token.d.ts +1 -1
- package/src/lib/design/system/rules/undefined-token.js +7 -61
- package/src/lib/design/system/rules/undefined-token.js.map +1 -1
- package/src/lib/design/system/rules/utility-css.d.ts +2 -1
- package/src/lib/design/system/rules/utility-css.js +40 -13
- package/src/lib/design/system/rules/utility-css.js.map +1 -1
- package/src/lib/design/system/rules/view-coverage.d.ts +8 -0
- package/src/lib/design/system/rules/view-coverage.js +51 -0
- package/src/lib/design/system/rules/view-coverage.js.map +1 -0
- package/src/lib/design/system/rules/visible-change.d.ts +19 -0
- package/src/lib/design/system/rules/visible-change.js +48 -0
- package/src/lib/design/system/rules/visible-change.js.map +1 -0
- package/src/lib/design/system/sdk-declarations.d.ts +10 -0
- package/src/lib/design/system/sdk-declarations.js +177 -0
- package/src/lib/design/system/sdk-declarations.js.map +1 -0
- package/src/lib/design/system/sdk-errors.d.ts +14 -0
- package/src/lib/design/system/sdk-errors.js +38 -0
- package/src/lib/design/system/sdk-errors.js.map +1 -0
- package/src/lib/design/system/sdk-selectors.d.ts +18 -0
- package/src/lib/design/system/sdk-selectors.js +131 -0
- package/src/lib/design/system/sdk-selectors.js.map +1 -0
- package/src/lib/design/system/see-through.d.ts +12 -0
- package/src/lib/design/system/see-through.js +112 -0
- package/src/lib/design/system/see-through.js.map +1 -0
- package/src/lib/design/system/served-cache.d.ts +99 -0
- package/src/lib/design/system/served-cache.js +202 -0
- package/src/lib/design/system/served-cache.js.map +1 -0
- package/src/lib/design/system/settled-panes.d.ts +23 -0
- package/src/lib/design/system/settled-panes.js +71 -0
- package/src/lib/design/system/settled-panes.js.map +1 -0
- package/src/lib/design/system/sketch/after-merge.d.ts +11 -0
- package/src/lib/design/system/sketch/after-merge.js +51 -0
- package/src/lib/design/system/sketch/after-merge.js.map +1 -0
- package/src/lib/design/system/sketch/aktuell-placeholders.d.ts +30 -0
- package/src/lib/design/system/sketch/aktuell-placeholders.js +87 -0
- package/src/lib/design/system/sketch/aktuell-placeholders.js.map +1 -0
- package/src/lib/design/system/sketch/baseline.d.ts +36 -2
- package/src/lib/design/system/sketch/baseline.js +76 -13
- package/src/lib/design/system/sketch/baseline.js.map +1 -1
- package/src/lib/design/system/sketch/check-format.js +3 -9
- package/src/lib/design/system/sketch/check-format.js.map +1 -1
- package/src/lib/design/system/sketch/check-sketches.d.ts +10 -0
- package/src/lib/design/system/sketch/check-sketches.js +50 -4
- package/src/lib/design/system/sketch/check-sketches.js.map +1 -1
- package/src/lib/design/system/sketch/clean-copy.d.ts +18 -0
- package/src/lib/design/system/sketch/clean-copy.js +104 -0
- package/src/lib/design/system/sketch/clean-copy.js.map +1 -0
- package/src/lib/design/system/sketch/cli-args.d.ts +13 -3
- package/src/lib/design/system/sketch/cli-args.js +20 -5
- package/src/lib/design/system/sketch/cli-args.js.map +1 -1
- package/src/lib/design/system/sketch/covered-diffs.d.ts +40 -0
- package/src/lib/design/system/sketch/covered-diffs.js +106 -0
- package/src/lib/design/system/sketch/covered-diffs.js.map +1 -0
- package/src/lib/design/system/sketch/edit-sketch.d.ts +29 -0
- package/src/lib/design/system/sketch/edit-sketch.js +169 -0
- package/src/lib/design/system/sketch/edit-sketch.js.map +1 -0
- package/src/lib/design/system/sketch/frame-budget.d.ts +24 -0
- package/src/lib/design/system/sketch/frame-budget.js +23 -0
- package/src/lib/design/system/sketch/frame-budget.js.map +1 -0
- package/src/lib/design/system/sketch/identical-renders.d.ts +31 -0
- package/src/lib/design/system/sketch/identical-renders.js +143 -0
- package/src/lib/design/system/sketch/identical-renders.js.map +1 -0
- package/src/lib/design/system/sketch/merge-commit.d.ts +20 -0
- package/src/lib/design/system/sketch/merge-commit.js +72 -0
- package/src/lib/design/system/sketch/merge-commit.js.map +1 -0
- package/src/lib/design/system/sketch/merge-runner.d.ts +20 -0
- package/src/lib/design/system/sketch/merge-runner.js +73 -0
- package/src/lib/design/system/sketch/merge-runner.js.map +1 -0
- package/src/lib/design/system/sketch/merge-shared.d.ts +2 -0
- package/src/lib/design/system/sketch/merge-shared.js +7 -10
- package/src/lib/design/system/sketch/merge-shared.js.map +1 -1
- package/src/lib/design/system/sketch/merge-step.d.ts +47 -0
- package/src/lib/design/system/sketch/merge-step.js +110 -0
- package/src/lib/design/system/sketch/merge-step.js.map +1 -0
- package/src/lib/design/system/sketch/merge-worker.d.ts +1 -0
- package/src/lib/design/system/sketch/merge-worker.js +14 -0
- package/src/lib/design/system/sketch/merge-worker.js.map +1 -0
- package/src/lib/design/system/sketch/merge.d.ts +19 -5
- package/src/lib/design/system/sketch/merge.js +245 -82
- package/src/lib/design/system/sketch/merge.js.map +1 -1
- package/src/lib/design/system/sketch/merged-layout.d.ts +17 -0
- package/src/lib/design/system/sketch/merged-layout.js +57 -0
- package/src/lib/design/system/sketch/merged-layout.js.map +1 -0
- package/src/lib/design/system/sketch/merged-parts.d.ts +31 -30
- package/src/lib/design/system/sketch/merged-parts.js +99 -84
- package/src/lib/design/system/sketch/merged-parts.js.map +1 -1
- package/src/lib/design/system/sketch/no-visible-change.d.ts +10 -0
- package/src/lib/design/system/sketch/no-visible-change.js +16 -6
- package/src/lib/design/system/sketch/no-visible-change.js.map +1 -1
- package/src/lib/design/system/sketch/note-language.d.ts +7 -0
- package/src/lib/design/system/sketch/note-language.js +83 -0
- package/src/lib/design/system/sketch/note-language.js.map +1 -0
- package/src/lib/design/system/sketch/part-definition.d.ts +27 -1
- package/src/lib/design/system/sketch/part-definition.js +109 -17
- package/src/lib/design/system/sketch/part-definition.js.map +1 -1
- package/src/lib/design/system/sketch/rebase-port.d.ts +24 -0
- package/src/lib/design/system/sketch/rebase-port.js +215 -0
- package/src/lib/design/system/sketch/rebase-port.js.map +1 -0
- package/src/lib/design/system/sketch/sample-mark-drift.d.ts +33 -0
- package/src/lib/design/system/sketch/sample-mark-drift.js +88 -0
- package/src/lib/design/system/sketch/sample-mark-drift.js.map +1 -0
- package/src/lib/design/system/sketch/sketch-check-cache.d.ts +11 -0
- package/src/lib/design/system/sketch/sketch-check-cache.js +22 -0
- package/src/lib/design/system/sketch/sketch-check-cache.js.map +1 -0
- package/src/lib/design/system/sketch/sketch-check-worker.d.ts +1 -0
- package/src/lib/design/system/sketch/sketch-check-worker.js +32 -0
- package/src/lib/design/system/sketch/sketch-check-worker.js.map +1 -0
- package/src/lib/design/system/sketch/sketch-checker.d.ts +40 -0
- package/src/lib/design/system/sketch/sketch-checker.js +109 -0
- package/src/lib/design/system/sketch/sketch-checker.js.map +1 -0
- package/src/lib/design/system/sketch/sketch.d.ts +100 -8
- package/src/lib/design/system/sketch/sketch.js +279 -36
- package/src/lib/design/system/sketch/sketch.js.map +1 -1
- package/src/lib/design/system/sketch/stale-base.d.ts +22 -0
- package/src/lib/design/system/sketch/stale-base.js +56 -0
- package/src/lib/design/system/sketch/stale-base.js.map +1 -0
- package/src/lib/design/system/sketch/unchanged-states.d.ts +39 -3
- package/src/lib/design/system/sketch/unchanged-states.js +75 -23
- package/src/lib/design/system/sketch/unchanged-states.js.map +1 -1
- package/src/lib/design/system/sketch/unused-closure.js +16 -4
- package/src/lib/design/system/sketch/unused-closure.js.map +1 -1
- package/src/lib/design/system/sketch/viewed-shots.d.ts +32 -0
- package/src/lib/design/system/sketch/viewed-shots.js +54 -0
- package/src/lib/design/system/sketch/viewed-shots.js.map +1 -0
- package/src/lib/design/system/skip-classes.d.ts +3 -0
- package/src/lib/design/system/skip-classes.js +17 -0
- package/src/lib/design/system/skip-classes.js.map +1 -0
- package/src/lib/design/system/slot-hosts.d.ts +38 -0
- package/src/lib/design/system/slot-hosts.js +93 -0
- package/src/lib/design/system/slot-hosts.js.map +1 -0
- package/src/lib/design/system/slow-checks.d.ts +44 -0
- package/src/lib/design/system/slow-checks.js +250 -0
- package/src/lib/design/system/slow-checks.js.map +1 -0
- package/src/lib/design/system/slow-run.d.ts +67 -0
- package/src/lib/design/system/slow-run.js +312 -0
- package/src/lib/design/system/slow-run.js.map +1 -0
- package/src/lib/design/system/stale-design-mocks.d.ts +20 -0
- package/src/lib/design/system/stale-design-mocks.js +59 -0
- package/src/lib/design/system/stale-design-mocks.js.map +1 -0
- package/src/lib/design/system/stale-dist.d.ts +61 -0
- package/src/lib/design/system/stale-dist.js +141 -0
- package/src/lib/design/system/stale-dist.js.map +1 -0
- package/src/lib/design/system/stale-parts.d.ts +45 -0
- package/src/lib/design/system/stale-parts.js +168 -0
- package/src/lib/design/system/stale-parts.js.map +1 -0
- package/src/lib/design/system/surface-nesting.d.ts +11 -0
- package/src/lib/design/system/surface-nesting.js +86 -0
- package/src/lib/design/system/surface-nesting.js.map +1 -0
- package/src/lib/design/system/system-command.js +11 -9
- package/src/lib/design/system/system-command.js.map +1 -1
- package/src/lib/design/system/system-modules.d.ts +17 -2
- package/src/lib/design/system/system-modules.js +18 -2
- package/src/lib/design/system/system-modules.js.map +1 -1
- package/src/lib/design/system/system-tsconfig.d.ts +9 -2
- package/src/lib/design/system/system-tsconfig.js +73 -13
- package/src/lib/design/system/system-tsconfig.js.map +1 -1
- package/src/lib/design/system/task-command.d.ts +52 -0
- package/src/lib/design/system/task-command.js +271 -0
- package/src/lib/design/system/task-command.js.map +1 -0
- package/src/lib/design/system/theming-text.d.ts +2 -0
- package/src/lib/design/system/theming-text.js +6 -0
- package/src/lib/design/system/theming-text.js.map +1 -0
- package/src/lib/design/system/touched-parts.d.ts +16 -0
- package/src/lib/design/system/touched-parts.js +121 -0
- package/src/lib/design/system/touched-parts.js.map +1 -0
- package/src/lib/design/system/tracked-reads.d.ts +27 -0
- package/src/lib/design/system/tracked-reads.js +100 -0
- package/src/lib/design/system/tracked-reads.js.map +1 -0
- package/src/lib/design/system/ts-source.d.ts +2 -0
- package/src/lib/design/system/ts-source.js +15 -1
- package/src/lib/design/system/ts-source.js.map +1 -1
- package/src/lib/design/system/unchanged-rows.d.ts +24 -0
- package/src/lib/design/system/unchanged-rows.js +212 -0
- package/src/lib/design/system/unchanged-rows.js.map +1 -0
- package/src/lib/design/system/uncommitted-decisions.d.ts +4 -0
- package/src/lib/design/system/uncommitted-decisions.js +35 -0
- package/src/lib/design/system/uncommitted-decisions.js.map +1 -0
- package/src/lib/design/system/uncovered-regions.d.ts +61 -0
- package/src/lib/design/system/uncovered-regions.js +171 -0
- package/src/lib/design/system/uncovered-regions.js.map +1 -0
- package/src/lib/design/system/unused-base-parts.d.ts +7 -0
- package/src/lib/design/system/unused-base-parts.js +76 -0
- package/src/lib/design/system/unused-base-parts.js.map +1 -0
- package/src/lib/design/system/visible-change-command.d.ts +60 -0
- package/src/lib/design/system/visible-change-command.js +310 -0
- package/src/lib/design/system/visible-change-command.js.map +1 -0
- package/src/lib/design/system/visible-change-parts.d.ts +28 -0
- package/src/lib/design/system/visible-change-parts.js +96 -0
- package/src/lib/design/system/visible-change-parts.js.map +1 -0
- package/src/lib/design/system/visible-change.d.ts +82 -0
- package/src/lib/design/system/visible-change.js +149 -0
- package/src/lib/design/system/visible-change.js.map +1 -0
- package/src/lib/design/system/write-origin.d.ts +12 -0
- package/src/lib/design/system/write-origin.js +18 -0
- package/src/lib/design/system/write-origin.js.map +1 -0
- package/src/lib/design/system-use.js +4 -4
- package/src/lib/design/system-use.js.map +1 -1
- package/src/lib/design/thumb.d.ts +37 -4
- package/src/lib/design/thumb.js +118 -21
- package/src/lib/design/thumb.js.map +1 -1
- package/src/lib/design/timings-command.d.ts +22 -0
- package/src/lib/design/timings-command.js +175 -0
- package/src/lib/design/timings-command.js.map +1 -0
- package/src/lib/design/timings.d.ts +117 -0
- package/src/lib/design/timings.js +296 -0
- package/src/lib/design/timings.js.map +1 -0
- package/src/lib/design/typecheck.d.ts +1 -1
- package/src/lib/design/typecheck.js +5 -5
- package/src/lib/design/typecheck.js.map +1 -1
- package/src/lib/design/unstable-cells.d.ts +23 -0
- package/src/lib/design/unstable-cells.js +40 -0
- package/src/lib/design/unstable-cells.js.map +1 -0
- package/src/lib/design/variant-diff.js +1 -1
- package/src/lib/design/variant-diff.js.map +1 -1
- package/src/lib/design/vite-cache.d.ts +11 -0
- package/src/lib/design/vite-cache.js +61 -0
- package/src/lib/design/vite-cache.js.map +1 -0
- package/src/lib/design/wait.d.ts +15 -0
- package/src/lib/design/wait.js +30 -0
- package/src/lib/design/wait.js.map +1 -0
- package/src/lib/design/warm-draw.d.ts +33 -0
- package/src/lib/design/warm-draw.js +74 -0
- package/src/lib/design/warm-draw.js.map +1 -0
- package/src/lib/design/warm-pages.d.ts +10 -2
- package/src/lib/design/warm-pages.js +6 -2
- package/src/lib/design/warm-pages.js.map +1 -1
- package/src/lib/design/work-root.d.ts +2 -0
- package/src/lib/design/work-root.js +8 -0
- package/src/lib/design/work-root.js.map +1 -0
- package/src/lib/json-file.d.ts +11 -0
- package/src/lib/json-file.js +21 -0
- package/src/lib/json-file.js.map +1 -0
- package/src/lib/plain-output.d.ts +27 -0
- package/src/lib/plain-output.js +66 -0
- package/src/lib/plain-output.js.map +1 -0
- package/src/lib/release.js +11 -3
- package/src/lib/release.js.map +1 -1
- package/src/lib/source-hash.d.ts +7 -0
- package/src/lib/source-hash.js +62 -0
- package/src/lib/source-hash.js.map +1 -0
- package/src/lib/update/agent-setup.js +2 -1
- package/src/lib/update/agent-setup.js.map +1 -1
- package/src/lib/update/commits.js +2 -2
- package/src/lib/update/commits.js.map +1 -1
- package/src/lib/update/migration-manifest.d.ts +12 -0
- package/src/lib/update/migration-manifest.js +13 -0
- package/src/lib/update/migration-manifest.js.map +1 -1
- package/src/lib/update/migration-record.js +2 -1
- package/src/lib/update/migration-record.js.map +1 -1
- package/src/lib/update/packages.js +4 -2
- package/src/lib/update/packages.js.map +1 -1
- package/src/lib/update/pending.js +2 -1
- package/src/lib/update/pending.js.map +1 -1
- package/src/lib/update/run-migrations.d.ts +3 -2
- package/src/lib/update/run-migrations.js +38 -5
- package/src/lib/update/run-migrations.js.map +1 -1
- package/src/lib/update/scan.js +8 -2
- package/src/lib/update/scan.js.map +1 -1
- package/src/lib/update/tasks.js +2 -1
- package/src/lib/update/tasks.js.map +1 -1
- package/src/lib/design/paths.js +0 -138
- package/src/lib/design/paths.js.map +0 -1
- package/src/lib/design/system/accept-command.d.ts +0 -7
- package/src/lib/design/system/accept-command.js +0 -55
- package/src/lib/design/system/accept-command.js.map +0 -1
package/design/define-call.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { morph } from './morph';
|
|
2
|
+
import { aimAnchoredArrows } from './arrow-anchor';
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* A value inside a template. An array joins with nothing between, and `null`, `undefined` and
|
|
@@ -29,15 +30,23 @@ export const html = (strings: TemplateStringsArray, ...values: unknown[]) => joi
|
|
|
29
30
|
/** Marks a template literal as CSS, for the same reason `html` does it for markup. */
|
|
30
31
|
export const css = (strings: TemplateStringsArray, ...values: unknown[]) => join(strings, values);
|
|
31
32
|
|
|
32
|
-
const
|
|
33
|
+
const rendered = new Set<string>();
|
|
34
|
+
const taken = new Set<string>();
|
|
33
35
|
|
|
34
|
-
/** The
|
|
35
|
-
export const unseenStyles = (styles: string
|
|
36
|
+
/** The sheets in `styles` not yet in `seen`, which it then records, joined as one stylesheet. */
|
|
37
|
+
export const unseenStyles = (styles: Iterable<string>, seen: Set<string>) => {
|
|
36
38
|
const fresh = [...new Set(styles)].filter((style) => !seen.has(style));
|
|
37
39
|
|
|
38
40
|
for (const style of fresh) seen.add(style);
|
|
39
41
|
|
|
40
|
-
return fresh.
|
|
42
|
+
return fresh.join('\n');
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
/** `drawn` with the component styles `ng()` rendered since the last drawing appended to its `styles`. */
|
|
46
|
+
export const withNgStyles = <T extends Drawing>(drawn: T): T => {
|
|
47
|
+
const sdk = unseenStyles(rendered, taken);
|
|
48
|
+
|
|
49
|
+
return sdk ? { ...drawn, styles: [drawn.styles, sdk].filter(Boolean).join('\n') } : drawn;
|
|
41
50
|
};
|
|
42
51
|
|
|
43
52
|
/** A form field `ng()` builds: its value, the errors it shows (a kind, or a kind and a message), and whether it is touched. */
|
|
@@ -50,6 +59,9 @@ export type NgField = { value: unknown; errors?: (string | { kind: string; messa
|
|
|
50
59
|
export type NgOptions = { imports?: string[]; fields?: Record<string, NgField> };
|
|
51
60
|
|
|
52
61
|
const render = async (template: string, options: NgOptions) => {
|
|
62
|
+
if (typeof location === 'undefined')
|
|
63
|
+
return { markup: template.replace(/<([a-zA-Z][\w:.-]*)/g, '<$1 data-et-ng'), styles: [] };
|
|
64
|
+
|
|
53
65
|
const params = new URLSearchParams(location.search);
|
|
54
66
|
const response = await fetch('/__design/render', {
|
|
55
67
|
method: 'POST',
|
|
@@ -70,12 +82,15 @@ const render = async (template: string, options: NgOptions) => {
|
|
|
70
82
|
|
|
71
83
|
/**
|
|
72
84
|
* Renders an Angular template with the real components on the design server and resolves with its
|
|
73
|
-
* markup
|
|
85
|
+
* markup. The component styles go into the `styles` of the drawing the frame shows. Rejects with the render error.
|
|
86
|
+
* Outside a browser it resolves with the template unrendered, each element marked `data-et-ng`.
|
|
74
87
|
*/
|
|
75
88
|
export const ng = async (template: string, options: NgOptions = {}) => {
|
|
76
89
|
const { markup, styles } = await render(template, options);
|
|
77
90
|
|
|
78
|
-
|
|
91
|
+
for (const style of styles) rendered.add(style);
|
|
92
|
+
|
|
93
|
+
return markup;
|
|
79
94
|
};
|
|
80
95
|
|
|
81
96
|
/** A click on an element that matches `click` inside the drawing shows the state `go`. */
|
|
@@ -113,8 +128,8 @@ export const switchStates =
|
|
|
113
128
|
*/
|
|
114
129
|
export const ngStates = async <TState extends string>(templates: Record<TState, string>, options: NgOptions = {}) => {
|
|
115
130
|
const names = Object.keys(templates) as TState[];
|
|
116
|
-
const
|
|
117
|
-
const states = Object.fromEntries(names.map((name, index) => [name,
|
|
131
|
+
const drawnStates = await Promise.all(names.map((name) => render(templates[name], options)));
|
|
132
|
+
const states = Object.fromEntries(names.map((name, index) => [name, drawnStates[index]?.markup ?? ''])) as Record<
|
|
118
133
|
TState,
|
|
119
134
|
string
|
|
120
135
|
>;
|
|
@@ -122,12 +137,10 @@ export const ngStates = async <TState extends string>(templates: Record<TState,
|
|
|
122
137
|
|
|
123
138
|
if (first === undefined) throw new Error('design-explore: ngStates() needs at least one state');
|
|
124
139
|
|
|
140
|
+
for (const style of drawnStates.flatMap((entry) => entry.styles)) rendered.add(style);
|
|
141
|
+
|
|
125
142
|
return {
|
|
126
|
-
body:
|
|
127
|
-
unseenStyles(
|
|
128
|
-
rendered.flatMap((entry) => entry.styles),
|
|
129
|
-
emitted,
|
|
130
|
-
) + `<div data-de-states="${first}" style="display: contents">${states[first]}</div>`,
|
|
143
|
+
body: `<div data-de-states="${first}" style="display: contents">${states[first]}</div>`,
|
|
131
144
|
on: (rules: StateRule<TState>[]) => switchStates(states, rules),
|
|
132
145
|
};
|
|
133
146
|
};
|
|
@@ -152,6 +165,8 @@ export const mountDrawing = (root: HTMLElement, drawn: Drawing): unknown => {
|
|
|
152
165
|
setup(root);
|
|
153
166
|
}
|
|
154
167
|
|
|
168
|
+
aimAnchoredArrows(root);
|
|
169
|
+
|
|
155
170
|
return null;
|
|
156
171
|
} catch (error: unknown) {
|
|
157
172
|
return error;
|
|
@@ -245,19 +260,29 @@ export const placeOverlays = (root: HTMLElement) => {
|
|
|
245
260
|
}
|
|
246
261
|
};
|
|
247
262
|
|
|
263
|
+
const setStyle = (
|
|
264
|
+
element: HTMLElement,
|
|
265
|
+
write: { property: 'paddingTop' | 'minHeight' | 'minWidth'; value: string },
|
|
266
|
+
) => {
|
|
267
|
+
const { property, value } = write;
|
|
268
|
+
|
|
269
|
+
if (element.style[property] !== value) element.style[property] = value;
|
|
270
|
+
};
|
|
271
|
+
|
|
272
|
+
const fitPaddingTops = new WeakMap<HTMLElement, string>();
|
|
273
|
+
|
|
248
274
|
/**
|
|
249
275
|
* Grows `root` to cover every absolutely or fixed positioned element inside it, such as an open
|
|
250
276
|
* overlay pane, so a frame measured or shot from `root` shows them. Skips a fixed element on all four
|
|
251
277
|
* edges of the viewport, such as a backdrop, and counts an absolute element only as far as the
|
|
252
|
-
* overflow boxes that clip it. Grows sideways too with `sideways
|
|
278
|
+
* overflow boxes that clip it. Grows sideways and up too with `sideways`, up by a top padding that
|
|
279
|
+
* moves the content below an element drawn above it. Safe to run again.
|
|
253
280
|
*/
|
|
254
281
|
export const fitOutOfFlow = (root: HTMLElement, options: { sideways: boolean }) => {
|
|
255
282
|
const view = root.ownerDocument.defaultView;
|
|
256
283
|
|
|
257
284
|
if (!view) return;
|
|
258
285
|
|
|
259
|
-
const box = root.getBoundingClientRect();
|
|
260
|
-
const style = view.getComputedStyle(root);
|
|
261
286
|
const fillsViewport = (style: CSSStyleDeclaration) =>
|
|
262
287
|
style.position === 'fixed' &&
|
|
263
288
|
[style.top, style.right, style.bottom, style.left].every((edge) => parseFloat(edge) === 0);
|
|
@@ -287,11 +312,32 @@ export const fitOutOfFlow = (root: HTMLElement, options: { sideways: boolean })
|
|
|
287
312
|
|
|
288
313
|
return { top, right, bottom, left, width: right - left, height: bottom - top };
|
|
289
314
|
};
|
|
290
|
-
const
|
|
291
|
-
.
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
315
|
+
const outOfFlowOf = () =>
|
|
316
|
+
[...root.querySelectorAll('*')]
|
|
317
|
+
.map((element) => ({ element, style: view.getComputedStyle(element) }))
|
|
318
|
+
.filter(({ style }) => ['absolute', 'fixed'].includes(style.position) && !fillsViewport(style))
|
|
319
|
+
.map(({ element, style }) => (style.position === 'fixed' ? element.getBoundingClientRect() : clipped(element)))
|
|
320
|
+
.filter((rect) => rect.width > 0 && rect.height > 0);
|
|
321
|
+
|
|
322
|
+
if (options.sideways) {
|
|
323
|
+
const fitted = fitPaddingTops.get(root);
|
|
324
|
+
|
|
325
|
+
if (fitted !== undefined) setStyle(root, { property: 'paddingTop', value: fitted });
|
|
326
|
+
|
|
327
|
+
const top = Math.min(...outOfFlowOf().map((rect) => rect.top));
|
|
328
|
+
const rootTop = root.getBoundingClientRect().top;
|
|
329
|
+
|
|
330
|
+
if (top < rootTop) {
|
|
331
|
+
const padding = parseFloat(view.getComputedStyle(root).paddingTop) || 0;
|
|
332
|
+
|
|
333
|
+
fitPaddingTops.set(root, root.style.paddingTop);
|
|
334
|
+
setStyle(root, { property: 'paddingTop', value: `${Math.ceil(2 * padding + rootTop - top)}px` });
|
|
335
|
+
} else fitPaddingTops.delete(root);
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
const box = root.getBoundingClientRect();
|
|
339
|
+
const style = view.getComputedStyle(root);
|
|
340
|
+
const outOfFlow = outOfFlowOf();
|
|
295
341
|
const extentOf = ({ side, start, paddings }: { side: 'bottom' | 'right'; start: number; paddings: string[] }) => {
|
|
296
342
|
const extent = Math.max(0, ...outOfFlow.map((rect) => Math.ceil(rect[side] - start)));
|
|
297
343
|
const [before, after] = paddings.map((padding) => parseFloat(padding) || 0) as [number, number];
|
|
@@ -301,16 +347,14 @@ export const fitOutOfFlow = (root: HTMLElement, options: { sideways: boolean })
|
|
|
301
347
|
return `${style.boxSizing === 'border-box' ? extent + after : extent - before}px`;
|
|
302
348
|
};
|
|
303
349
|
|
|
304
|
-
root
|
|
305
|
-
|
|
306
|
-
start: box.top,
|
|
307
|
-
paddings: [style.paddingTop, style.paddingBottom],
|
|
350
|
+
setStyle(root, {
|
|
351
|
+
property: 'minHeight',
|
|
352
|
+
value: extentOf({ side: 'bottom', start: box.top, paddings: [style.paddingTop, style.paddingBottom] }),
|
|
308
353
|
});
|
|
309
354
|
if (options.sideways)
|
|
310
|
-
root
|
|
311
|
-
|
|
312
|
-
start: box.left,
|
|
313
|
-
paddings: [style.paddingLeft, style.paddingRight],
|
|
355
|
+
setStyle(root, {
|
|
356
|
+
property: 'minWidth',
|
|
357
|
+
value: extentOf({ side: 'right', start: box.left, paddings: [style.paddingLeft, style.paddingRight] }),
|
|
314
358
|
});
|
|
315
359
|
};
|
|
316
360
|
|
|
@@ -331,7 +375,8 @@ export type CallVariant = {
|
|
|
331
375
|
verdict?: 'chosen' | 'rejected';
|
|
332
376
|
/** The `key` of the round that drew it. Left out by a call that runs no rounds. */
|
|
333
377
|
round?: string;
|
|
334
|
-
|
|
378
|
+
/** A drawing that needs `ng()` default-exports a promise of it: a top-level `await` can hang WebKit when its frame is removed. */
|
|
379
|
+
load: () => Promise<{ default: Drawing | Promise<Drawing> }>;
|
|
335
380
|
};
|
|
336
381
|
|
|
337
382
|
/**
|
package/design/define-part.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Drawing } from './define-call';
|
|
1
|
+
import { Drawing, withNgStyles } from './define-call';
|
|
2
2
|
import { forceBody } from './mark-part';
|
|
3
3
|
|
|
4
4
|
export { contrastRatioOf } from './contrast';
|
|
@@ -18,6 +18,8 @@ export { svgAsset } from './svg-asset';
|
|
|
18
18
|
export type { SvgAssetOptions } from './svg-asset';
|
|
19
19
|
export { tokenSheet } from './token-sheet';
|
|
20
20
|
export type { TokenSheetOptions } from './token-sheet';
|
|
21
|
+
export { withAction } from './with-action';
|
|
22
|
+
export type { ActionTarget } from './with-action';
|
|
21
23
|
|
|
22
24
|
/** An interaction Studio can force on a part's root element. Rest is always drawn and never listed. */
|
|
23
25
|
export type Interaction = 'hover' | 'focus-visible' | 'active' | 'disabled';
|
|
@@ -26,6 +28,8 @@ export type Interaction = 'hover' | 'focus-visible' | 'active' | 'disabled';
|
|
|
26
28
|
* One part of a product's design system. `note` records why the part has its current shape, and
|
|
27
29
|
* `madeBy` the model ids that drew it, written by a sketch merge.
|
|
28
30
|
* `states` names each state it is drawn in with the props for that state, and `render` draws it.
|
|
31
|
+
* `frame` wraps the body of each of the part's own states in a demo frame (padding, a page background); a part that
|
|
32
|
+
* calls `render` of this one gets the part without it.
|
|
29
33
|
* `styles` is the part's stylesheet: every drawing of the part gets it before the styles `render` returns, and a
|
|
30
34
|
* host that embeds a piece of the part's markup takes it from the default export.
|
|
31
35
|
* A part that responds to its width lists the container `widths` it is drawn at; without them a
|
|
@@ -36,18 +40,22 @@ export type Interaction = 'hover' | 'focus-visible' | 'active' | 'disabled';
|
|
|
36
40
|
* complete` requires the states and surfaces its `kind` and `input` need, see `Control`.
|
|
37
41
|
* `motions` names each motion between two of its states, see `Motion`; a rule in `rules` can name one.
|
|
38
42
|
* `unreachable` lists the state pairs no user can move between, each with its `reason`; they need no motion.
|
|
43
|
+
* `instant` is the reason every switch between two states happens at once; no pair then needs a motion.
|
|
39
44
|
* `omits` records mock option values deliberately left off the grid, each with a reason.
|
|
40
45
|
* `checks.skip` names the render checks of `design check` the part breaks on purpose, such as
|
|
41
46
|
* `CLIPPED` for a part that cuts its content. To skip a check for one element only, put
|
|
42
47
|
* `data-et-skip="CLIPPED"` on it; the check then ignores that element and everything inside it.
|
|
43
48
|
* `contrast` feeds the contrast check of `design check`, see `PartContrast`.
|
|
44
49
|
* `implements` links the part to the code that builds it, see `PartLink`.
|
|
50
|
+
* `sample` makes an embedded instance of the part comparable across the states of its host, see `PartSample`.
|
|
51
|
+
* `coverage` names the real input range and the view states the design must draw, see `PartCoverage`.
|
|
45
52
|
*/
|
|
46
53
|
export type Part<TProps, TState extends string = string> = {
|
|
47
54
|
note: string;
|
|
48
55
|
madeBy?: string[];
|
|
49
56
|
states: Record<TState, TProps>;
|
|
50
57
|
styles?: string;
|
|
58
|
+
frame?: (body: string, props: TProps) => string;
|
|
51
59
|
widths?: number[];
|
|
52
60
|
interactions?: Interaction[];
|
|
53
61
|
grid?: StateGrid<TState>;
|
|
@@ -56,17 +64,53 @@ export type Part<TProps, TState extends string = string> = {
|
|
|
56
64
|
contrast?: PartContrast;
|
|
57
65
|
motions?: Record<string, Motion<TState>>;
|
|
58
66
|
unreachable?: { from: TState; to: TState; reason: string }[];
|
|
67
|
+
instant?: string;
|
|
59
68
|
omits?: { option: keyof TProps & string; value: string; reason: string }[];
|
|
60
69
|
rules?: PartRule<TState>[];
|
|
61
70
|
implements?: PartLink;
|
|
71
|
+
sample?: PartSample<TProps>;
|
|
72
|
+
coverage?: PartCoverage<TState>;
|
|
62
73
|
render: (props: TProps, options?: RenderOptions) => DrawnPart | Promise<DrawnPart>;
|
|
63
74
|
};
|
|
64
75
|
|
|
76
|
+
/** A width and height in CSS px. */
|
|
77
|
+
export type CoverageSize = { width: number; height: number };
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* What a part's design must draw to cover the product's real inputs; `design check` warns on each gap.
|
|
81
|
+
* - `branches`: per layout branch the part switches between, the widest and tallest `real` input from the product's
|
|
82
|
+
* listing, and the size of the sample each state draws in that branch (`COVERAGE-RANGE`).
|
|
83
|
+
* - `zoom`: the zoom extremes the view reaches, and per status (drawing, paused, failed, …) the state that draws it
|
|
84
|
+
* at each extreme (`COVERAGE-ZOOM`).
|
|
85
|
+
* - `async`: per mark the view reads asynchronously, the state that draws it while unknown, or `null`
|
|
86
|
+
* (`COVERAGE-ASYNC`).
|
|
87
|
+
* - `chrome`: the labels of the live chrome around a part that draws the tool itself; no text inside a
|
|
88
|
+
* `data-et-sample` region may repeat one (`SAMPLE-CHROME`).
|
|
89
|
+
*
|
|
90
|
+
* Mark each drawn status with `data-et-status="<status>"`: the same status twice inside one `data-et-view` region,
|
|
91
|
+
* or one state without such regions, is a `STATUS-TWICE` warning, for every part.
|
|
92
|
+
*/
|
|
93
|
+
export type PartCoverage<TState extends string = string> = {
|
|
94
|
+
branches?: Record<string, { real: CoverageSize; samples: Partial<Record<TState, CoverageSize>> }>;
|
|
95
|
+
zoom?: { extremes: readonly string[]; statuses: Record<string, Partial<Record<string, TState>>> };
|
|
96
|
+
async?: Record<string, TState | null>;
|
|
97
|
+
chrome?: readonly string[];
|
|
98
|
+
};
|
|
99
|
+
|
|
65
100
|
/**
|
|
66
101
|
* The code a part is built in: a component or element names the repo-relative path of its `.component.ts`, a page
|
|
67
|
-
* names its route
|
|
102
|
+
* names its route and, for `design compare`, the presentational `component` it renders. `design check` fails on a
|
|
103
|
+
* path that does not exist, and lists a part without a link as open.
|
|
68
104
|
*/
|
|
69
|
-
|
|
105
|
+
/**
|
|
106
|
+
* The prop `id` a host passes to name an embedded instance, and the props `marks` that carry its sample marks. Every
|
|
107
|
+
* state of one host that draws the same `id` must pass the same `marks`: `design sketch check` warns and
|
|
108
|
+
* `design sketch ready` refuses with `SAMPLE-MARK-DRIFT` otherwise. A host state that shows another sample passes
|
|
109
|
+
* another `id`.
|
|
110
|
+
*/
|
|
111
|
+
export type PartSample<TProps> = { id: keyof TProps & string; marks: readonly (keyof TProps & string)[] };
|
|
112
|
+
|
|
113
|
+
export type PartLink = `${string}.component.ts` | { route: `/${string}`; component?: `${string}.component.ts` };
|
|
70
114
|
|
|
71
115
|
/** What `play` of a motion may use, so Studio controls time: `at` schedules `fn` at `ms` into the motion on the tool's clock, `random` is seeded, `rect` measures a selector in the `from` state. */
|
|
72
116
|
export type MotionContext = {
|
|
@@ -152,8 +196,11 @@ export type RenderOptions = { interaction?: Interaction };
|
|
|
152
196
|
|
|
153
197
|
type PartSource<TProps, TState extends string, TColumn extends string> = Omit<
|
|
154
198
|
Part<TProps, TState>,
|
|
155
|
-
'states' | 'grid' | 'controls' | 'motions' | 'rules' | 'render'
|
|
199
|
+
'states' | 'grid' | 'controls' | 'motions' | 'rules' | 'render' | 'frame' | 'sample' | 'coverage'
|
|
156
200
|
> & {
|
|
201
|
+
coverage?: PartCoverage<NoInfer<TState>>;
|
|
202
|
+
sample?: PartSample<NoInfer<TProps>>;
|
|
203
|
+
frame?: (body: string, props: NoInfer<TProps>) => string;
|
|
157
204
|
motions?: Record<string, Motion<NoInfer<TState>>>;
|
|
158
205
|
rules?: PartRule<NoInfer<TState>>[];
|
|
159
206
|
states: Record<TState, NoInfer<TProps>>;
|
|
@@ -168,6 +215,13 @@ type PartSource<TProps, TState extends string, TColumn extends string> = Omit<
|
|
|
168
215
|
*/
|
|
169
216
|
export const forceInteraction = (markup: string, interaction: Interaction) => forceBody(markup, interaction);
|
|
170
217
|
|
|
218
|
+
/**
|
|
219
|
+
* The attribute that marks an element as the region `name` whose content the implementing component projects with
|
|
220
|
+
* `<ng-content>`, e.g. `<main ${slot('canvas')}>`. `design compare` empties it in the design picture, as the harness
|
|
221
|
+
* projects nothing.
|
|
222
|
+
*/
|
|
223
|
+
export const slot = (name: string) => `data-et-projected="${name}"`;
|
|
224
|
+
|
|
171
225
|
const finished = (
|
|
172
226
|
drawn: Drawing,
|
|
173
227
|
{ styles, interaction }: { styles?: string; interaction?: Interaction },
|
|
@@ -177,6 +231,12 @@ const finished = (
|
|
|
177
231
|
styles: [styles, drawn.styles].filter(Boolean).join('\n'),
|
|
178
232
|
});
|
|
179
233
|
|
|
234
|
+
/** Draws `props` as one of the part's own states: the drawing of `render` inside the part's `frame`. */
|
|
235
|
+
export const drawState = <TProps>(part: Part<TProps>, props: TProps): Promise<DrawnPart> =>
|
|
236
|
+
Promise.resolve(part.render(props)).then((drawn) =>
|
|
237
|
+
withNgStyles(part.frame ? { ...drawn, body: part.frame(drawn.body, props) } : drawn),
|
|
238
|
+
);
|
|
239
|
+
|
|
180
240
|
/**
|
|
181
241
|
* Types a part where it is written. A part file default-exports the result, and may export named
|
|
182
242
|
* helpers next to it that other parts import from `@system/<layer>/<name>`. Without type
|
package/design/icon-sheet.ts
CHANGED
|
@@ -31,7 +31,7 @@ const SHEET_STYLES = `
|
|
|
31
31
|
.ics-cell { display: flex; }
|
|
32
32
|
.ics-construction { display: grid; gap: var(--space-5, 2rem); }
|
|
33
33
|
.ics-item { display: flex; flex-direction: column; align-items: center; gap: var(--space-2, 0.8rem); }
|
|
34
|
-
.ics-frame { position: relative; display: flex; border: 1px solid var(--surface-border, oklch(0.34 0 0));
|
|
34
|
+
.ics-frame { position: relative; display: flex; border: 1px solid var(--surface-border, oklch(0.34 0 0)); }
|
|
35
35
|
.ics-icon { position: relative; }
|
|
36
36
|
.ics-guides { position: absolute; inset: 0; width: 100%; height: 100%; color: var(--accent, oklch(0.7 0.15 250)); pointer-events: none; }
|
|
37
37
|
.ics-guides path, .ics-guides rect { vector-effect: non-scaling-stroke; stroke-width: 1px; }
|
|
@@ -5,28 +5,35 @@ export type InteractionRowsOptions<TProps, TInteraction extends string> = {
|
|
|
5
5
|
|
|
6
6
|
type RowState<TRow extends string, TInteraction extends string> = TRow | `${TRow}-${TInteraction}`;
|
|
7
7
|
|
|
8
|
+
const isDisabledRow = (props: unknown) =>
|
|
9
|
+
typeof props === 'object' && props !== null && (props as { disabled?: unknown }).disabled === true;
|
|
10
|
+
|
|
8
11
|
/**
|
|
9
12
|
* Builds the `states` and `grid` of a part from one props object per row: each row is drawn at rest as `<row>` and
|
|
10
|
-
* in each of `interactions` as `<row>-<interaction>`, with the props `force` returns.
|
|
11
|
-
* `definePart`; the built state names stay in its type.
|
|
13
|
+
* in each of `interactions` as `<row>-<interaction>`, with the props `force` returns. A row whose props carry
|
|
14
|
+
* `disabled: true` is drawn only at rest. Spread the result into `definePart`; the built state names stay in its type.
|
|
12
15
|
*/
|
|
13
16
|
export const interactionRows = <TProps, const TRow extends string, const TInteraction extends string>(
|
|
14
17
|
rows: Record<TRow, TProps>,
|
|
15
18
|
{ interactions, force }: InteractionRowsOptions<TProps, TInteraction>,
|
|
16
19
|
) => {
|
|
17
20
|
const entries = Object.entries(rows) as [TRow, TProps][];
|
|
21
|
+
const interactionsOf = (props: TProps) => (isDisabledRow(props) ? [] : interactions);
|
|
18
22
|
const states = Object.fromEntries(
|
|
19
23
|
entries.flatMap(([row, props]) => [
|
|
20
24
|
[row, props],
|
|
21
|
-
...
|
|
25
|
+
...interactionsOf(props).map((interaction) => [`${row}-${interaction}`, force(props, interaction)]),
|
|
22
26
|
]),
|
|
23
27
|
) as Record<RowState<TRow, TInteraction>, TProps>;
|
|
24
28
|
const gridRows = Object.fromEntries(
|
|
25
|
-
entries.map(([row]) => [
|
|
29
|
+
entries.map(([row, props]) => [
|
|
26
30
|
row,
|
|
27
|
-
Object.fromEntries([
|
|
31
|
+
Object.fromEntries([
|
|
32
|
+
['rest', row],
|
|
33
|
+
...interactionsOf(props).map((interaction) => [interaction, `${row}-${interaction}`]),
|
|
34
|
+
]),
|
|
28
35
|
]),
|
|
29
|
-
) as Record<TRow,
|
|
36
|
+
) as Record<TRow, { rest: TRow } & Partial<Record<TInteraction, RowState<TRow, TInteraction>>>>;
|
|
30
37
|
|
|
31
38
|
return { states, grid: { columns: ['rest', ...interactions] as const, rows: gridRows } };
|
|
32
39
|
};
|
package/design/mark-part.ts
CHANGED
|
@@ -37,11 +37,19 @@ export const markBody = (body: string, key: string) => {
|
|
|
37
37
|
return `${body.slice(0, valueEnd)} ${key}${body.slice(valueEnd)}`;
|
|
38
38
|
};
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
const DISABLED_ATTRIBUTE = /\s(?:disabled(?=[\s=/>]|$)|aria-disabled\s*=\s*["']?true\b)/i;
|
|
41
|
+
|
|
42
|
+
const isDisabledMarkup = (attributes: string) => DISABLED_ATTRIBUTE.test(attributes);
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Forces `interaction` on the first element of `body` the way a frame forces it on the root of a part. A disabled
|
|
46
|
+
* element stays at rest: it gets no forced hover, active or focus-visible.
|
|
47
|
+
*/
|
|
41
48
|
export const forceBody = (body: string, interaction: Interaction) => {
|
|
42
49
|
const attributesAt = attributesAtOf(body);
|
|
43
50
|
|
|
44
51
|
if (attributesAt === null) return body;
|
|
52
|
+
if (interaction !== 'disabled' && isDisabledMarkup(ATTRIBUTES.exec(body.slice(attributesAt))?.[0] ?? '')) return body;
|
|
45
53
|
|
|
46
54
|
const forced = interaction === 'disabled' ? ' disabled aria-disabled="true"' : ` data-et-force="${interaction}"`;
|
|
47
55
|
|
|
@@ -117,6 +125,23 @@ const slotProps = (value: unknown, { key, depth = 0 }: { key: string; depth?: nu
|
|
|
117
125
|
return value;
|
|
118
126
|
};
|
|
119
127
|
|
|
128
|
+
const SAMPLES = Symbol.for('@ethlete/cli/design/samples');
|
|
129
|
+
|
|
130
|
+
/** Reports `props` to the sample recorder a check installs, when the part declares a `sample` and the props carry its `id`. */
|
|
131
|
+
const recordSample = ({ key, part }: { key: string; part: unknown }, props: unknown) => {
|
|
132
|
+
const record = (globalThis as Record<symbol, unknown>)[SAMPLES];
|
|
133
|
+
const sample = isPlainObject(part) ? part['sample'] : undefined;
|
|
134
|
+
|
|
135
|
+
if (typeof record !== 'function' || !isPlainObject(sample) || !isPlainObject(props)) return;
|
|
136
|
+
|
|
137
|
+
const id = props[String(sample['id'])];
|
|
138
|
+
const marks = Array.isArray(sample['marks']) ? (sample['marks'] as unknown[]).map(String) : [];
|
|
139
|
+
|
|
140
|
+
if (typeof id !== 'string' || id === '') return;
|
|
141
|
+
|
|
142
|
+
record({ part: key, id, marks: Object.fromEntries(marks.map((mark) => [mark, props[mark] ?? null])) });
|
|
143
|
+
};
|
|
144
|
+
|
|
120
145
|
const markDrawing = <TDrawing extends Drawing>(drawn: TDrawing, key: string): TDrawing =>
|
|
121
146
|
typeof drawn?.body === 'string' ? { ...drawn, body: markBody(drawn.body, key) } : drawn;
|
|
122
147
|
|
|
@@ -135,9 +160,34 @@ export const markPart = <TProps, TState extends string>(
|
|
|
135
160
|
return {
|
|
136
161
|
...part,
|
|
137
162
|
render: (props: TProps, options?: RenderOptions) => {
|
|
163
|
+
recordSample({ key, part }, props);
|
|
164
|
+
|
|
138
165
|
const drawn = render.call(part, slotProps(props, { key }) as TProps, options);
|
|
139
166
|
|
|
140
167
|
return drawn instanceof Promise ? drawn.then((done) => markDrawing(done, key)) : markDrawing(drawn, key);
|
|
141
168
|
},
|
|
142
169
|
};
|
|
143
170
|
};
|
|
171
|
+
|
|
172
|
+
const markOutput = (output: unknown, key: string) =>
|
|
173
|
+
typeof output === 'string' ? markBody(output, key) : markDrawing(output as Drawing, key);
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* `value` as a named export of the part `key`: a function whose markup, or drawing body, comes back with its first
|
|
177
|
+
* element marked as the root of `key`, and the markup of its arguments as slotted into `key`. Any other value, a
|
|
178
|
+
* class included, stays as it is. A call whose first argument carries the `sample` id of `part` is reported as a sample.
|
|
179
|
+
*/
|
|
180
|
+
export const markNamed = <T>(value: T, { key, part }: { key: string; part?: unknown }): T => {
|
|
181
|
+
if (typeof value !== 'function' || /^class\b/u.test(Function.prototype.toString.call(value))) return value;
|
|
182
|
+
|
|
183
|
+
return function (this: unknown, ...args: unknown[]) {
|
|
184
|
+
recordSample({ key, part }, args[0]);
|
|
185
|
+
|
|
186
|
+
const output = value.apply(
|
|
187
|
+
this,
|
|
188
|
+
args.map((arg) => slotProps(arg, { key })),
|
|
189
|
+
);
|
|
190
|
+
|
|
191
|
+
return output instanceof Promise ? output.then((done) => markOutput(done, key)) : markOutput(output, key);
|
|
192
|
+
} as T;
|
|
193
|
+
};
|
package/design/token-sheet.ts
CHANGED
|
@@ -18,7 +18,7 @@ const SHEET_STYLES = `
|
|
|
18
18
|
.ts-root { position: relative; display: flex; flex-direction: column; gap: var(--space-4, 1.6rem); width: 960px; padding: var(--space-6, 2.4rem); box-sizing: border-box; background: var(--surface, oklch(0.17 0 0)); color: var(--text, oklch(0.94 0 0)); font-family: var(--font-ui, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif); font-size: var(--text-md, 1.3rem); line-height: var(--text-md-line, 1.8rem); }
|
|
19
19
|
.ts-title { margin: 0; font-size: var(--text-xl, 1.7rem); line-height: var(--text-xl-line, 2.2rem); font-weight: var(--weight-strong, 600); }
|
|
20
20
|
.ts-note { margin: 0; max-width: 64rem; color: var(--text-muted, oklch(0.72 0 0)); }
|
|
21
|
-
.ts-panel { margin: 0; padding: var(--space-4, 1.6rem);
|
|
21
|
+
.ts-panel { margin: 0; padding: var(--space-4, 1.6rem); border: 1px solid var(--surface-border, oklch(0.34 0 0)); border-radius: var(--radius-control-lg, 1rem); }
|
|
22
22
|
.ts-list { list-style: none; display: flex; flex-direction: column; gap: var(--space-1, 0.4rem); }
|
|
23
23
|
.ts-row { display: grid; grid-template-columns: 200px 240px 1fr; align-items: center; gap: var(--space-3, 1.2rem); min-height: var(--row, 2.4rem); }
|
|
24
24
|
.ts-name { font-family: var(--font-code, ui-monospace, "SF Mono", Menlo, Consolas, monospace); font-size: var(--text-sm, 1.15rem); line-height: var(--text-sm-line, 1.6rem); color: var(--text-muted, oklch(0.72 0 0)); }
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Sizes the frame root to its content; `padded` keeps a 16 px margin around it, which a bare compare shot leaves out. */
|
|
2
|
+
export const fitRoot = (root: HTMLElement, options: { padded: boolean }) => {
|
|
3
|
+
root.ownerDocument.documentElement.style.overflow = 'hidden';
|
|
4
|
+
root.style.width = 'max-content';
|
|
5
|
+
|
|
6
|
+
if (options.padded) root.style.padding = '16px';
|
|
7
|
+
};
|