@ethlete/cli 3.0.0-next.25 → 3.0.0-next.27
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 +417 -0
- package/build-info.json +1 -0
- package/design/define-call.ts +99 -31
- package/design/define-part.ts +50 -3
- package/design/icon-sheet.ts +1 -1
- package/design/interaction-rows.ts +13 -6
- package/design/logo-sheet.ts +52 -0
- package/design/mark-part.ts +51 -1
- package/design/motion-drive.ts +215 -0
- package/design/motion-runtime.ts +14 -2
- package/design/motion-tokens.ts +177 -0
- package/design/token-sheet.ts +1 -1
- package/design/web/frame-fill.ts +4 -0
- package/design/web/frame-fit.ts +7 -0
- package/design/web/frame-scheme.ts +44 -0
- package/design/web/frame-surfaces.ts +294 -0
- package/design/web/frame.ts +162 -43
- 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/design/asset-shot.js +2 -2
- package/src/lib/design/asset-shot.js.map +1 -1
- 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/calls-tsconfig.d.ts +2 -0
- package/src/lib/design/calls-tsconfig.js +10 -3
- package/src/lib/design/calls-tsconfig.js.map +1 -1
- package/src/lib/design/check.d.ts +1 -0
- package/src/lib/design/check.js +195 -13
- package/src/lib/design/check.js.map +1 -1
- 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/contact-sheet.d.ts +9 -0
- package/src/lib/design/contact-sheet.js +38 -4
- package/src/lib/design/contact-sheet.js.map +1 -1
- package/src/lib/design/design-command.d.ts +2 -0
- package/src/lib/design/design-command.js +183 -15
- package/src/lib/design/design-command.js.map +1 -1
- package/src/lib/design/draw-ledger.d.ts +36 -0
- package/src/lib/design/draw-ledger.js +52 -0
- package/src/lib/design/draw-ledger.js.map +1 -0
- package/src/lib/design/force-interactions.d.ts +1 -1
- package/src/lib/design/force-interactions.js +4 -2
- package/src/lib/design/force-interactions.js.map +1 -1
- package/src/lib/design/inbox-command.js +9 -5
- package/src/lib/design/inbox-command.js.map +1 -1
- package/src/lib/design/mcp-command.d.ts +28 -3
- package/src/lib/design/mcp-command.js +134 -21
- 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 +10 -16
- 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 +19 -10
- package/src/lib/design/new-call.js.map +1 -1
- package/src/lib/design/part-marks.d.ts +3 -2
- package/src/lib/design/part-marks.js +13 -5
- package/src/lib/design/part-marks.js.map +1 -1
- package/src/lib/design/paths.d.ts +42 -0
- package/src/lib/design/paths.js +50 -1
- package/src/lib/design/paths.js.map +1 -1
- package/src/lib/design/product-command.d.ts +1 -1
- package/src/lib/design/product-command.js +12 -14
- package/src/lib/design/product-command.js.map +1 -1
- package/src/lib/design/ready-shots.d.ts +29 -3
- package/src/lib/design/ready-shots.js +105 -5
- package/src/lib/design/ready-shots.js.map +1 -1
- package/src/lib/design/render-packages.d.ts +9 -17
- package/src/lib/design/render-packages.js +25 -63
- package/src/lib/design/render-packages.js.map +1 -1
- package/src/lib/design/render-worker.js +2 -3
- package/src/lib/design/render-worker.js.map +1 -1
- package/src/lib/design/render.d.ts +2 -0
- package/src/lib/design/render.js +32 -7
- package/src/lib/design/render.js.map +1 -1
- package/src/lib/design/serve.d.ts +23 -3
- package/src/lib/design/serve.js +288 -35
- package/src/lib/design/serve.js.map +1 -1
- package/src/lib/design/server-identity.d.ts +36 -0
- package/src/lib/design/server-identity.js +68 -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-command.d.ts +30 -6
- package/src/lib/design/shot-command.js +144 -56
- package/src/lib/design/shot-command.js.map +1 -1
- package/src/lib/design/shot-store.d.ts +24 -0
- package/src/lib/design/shot-store.js +120 -0
- package/src/lib/design/shot-store.js.map +1 -0
- package/src/lib/design/shot.d.ts +71 -1
- package/src/lib/design/shot.js +253 -40
- package/src/lib/design/shot.js.map +1 -1
- package/src/lib/design/sketch-command.d.ts +6 -1
- package/src/lib/design/sketch-command.js +452 -136
- package/src/lib/design/sketch-command.js.map +1 -1
- package/src/lib/design/ssr-shims.d.ts +2 -0
- package/src/lib/design/ssr-shims.js +12 -1
- 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 +18 -1
- package/src/lib/design/stamp.js +53 -7
- 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/studio-api.d.ts +35 -4
- package/src/lib/design/studio-api.js +312 -41
- package/src/lib/design/studio-api.js.map +1 -1
- package/src/lib/design/system/accept-command.d.ts +39 -5
- package/src/lib/design/system/accept-command.js +109 -25
- package/src/lib/design/system/accept-command.js.map +1 -1
- package/src/lib/design/system/accepted-pictures.d.ts +83 -0
- package/src/lib/design/system/accepted-pictures.js +324 -0
- package/src/lib/design/system/accepted-pictures.js.map +1 -0
- package/src/lib/design/system/action-lost.d.ts +59 -0
- package/src/lib/design/system/action-lost.js +120 -0
- package/src/lib/design/system/action-lost.js.map +1 -0
- package/src/lib/design/system/action-press.d.ts +23 -0
- package/src/lib/design/system/action-press.js +76 -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 +101 -0
- package/src/lib/design/system/actions-command.js +695 -0
- package/src/lib/design/system/actions-command.js.map +1 -0
- package/src/lib/design/system/actions.d.ts +158 -0
- package/src/lib/design/system/actions.js +295 -0
- package/src/lib/design/system/actions.js.map +1 -0
- package/src/lib/design/system/app-files.d.ts +10 -0
- package/src/lib/design/system/app-files.js +159 -0
- package/src/lib/design/system/app-files.js.map +1 -0
- package/src/lib/design/system/bespoke-controls.d.ts +30 -0
- package/src/lib/design/system/bespoke-controls.js +147 -0
- package/src/lib/design/system/bespoke-controls.js.map +1 -0
- package/src/lib/design/system/build-ready-contract.d.ts +27 -0
- package/src/lib/design/system/build-ready-contract.js +12 -0
- package/src/lib/design/system/build-ready-contract.js.map +1 -0
- package/src/lib/design/system/check-rules.d.ts +1 -0
- package/src/lib/design/system/check-rules.js +82 -0
- package/src/lib/design/system/check-rules.js.map +1 -0
- package/src/lib/design/system/check-system.d.ts +62 -3
- package/src/lib/design/system/check-system.js +527 -34
- package/src/lib/design/system/check-system.js.map +1 -1
- package/src/lib/design/system/colour.d.ts +4 -1
- package/src/lib/design/system/colour.js +54 -2
- package/src/lib/design/system/colour.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.js +2 -2
- package/src/lib/design/system/comments/inbox.js.map +1 -1
- package/src/lib/design/system/compare-command.d.ts +119 -0
- package/src/lib/design/system/compare-command.js +558 -0
- package/src/lib/design/system/compare-command.js.map +1 -0
- package/src/lib/design/system/complete-command.js +7 -3
- package/src/lib/design/system/complete-command.js.map +1 -1
- package/src/lib/design/system/complete.d.ts +99 -3
- package/src/lib/design/system/complete.js +358 -88
- 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 +6 -1
- package/src/lib/design/system/contrast-check.js +179 -13
- package/src/lib/design/system/contrast-check.js.map +1 -1
- 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 +31 -0
- package/src/lib/design/system/design-hash.js +73 -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 +175 -0
- package/src/lib/design/system/dom-command.js.map +1 -0
- package/src/lib/design/system/drawn-open-points.d.ts +38 -0
- package/src/lib/design/system/drawn-open-points.js +94 -0
- package/src/lib/design/system/drawn-open-points.js.map +1 -0
- package/src/lib/design/system/dropped-props.d.ts +25 -0
- package/src/lib/design/system/dropped-props.js +159 -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/go-batch.d.ts +24 -0
- package/src/lib/design/system/go-batch.js +110 -0
- package/src/lib/design/system/go-batch.js.map +1 -0
- package/src/lib/design/system/go-command.d.ts +4 -0
- package/src/lib/design/system/go-command.js +64 -0
- package/src/lib/design/system/go-command.js.map +1 -0
- package/src/lib/design/system/go-guard.d.ts +26 -0
- package/src/lib/design/system/go-guard.js +70 -0
- package/src/lib/design/system/go-guard.js.map +1 -0
- package/src/lib/design/system/go-step.d.ts +13 -0
- package/src/lib/design/system/go-step.js +84 -0
- package/src/lib/design/system/go-step.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 +35 -0
- package/src/lib/design/system/harness-build-cache.js +175 -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-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 +40 -0
- package/src/lib/design/system/harness-server.js +296 -0
- package/src/lib/design/system/harness-server.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/list-system.d.ts +8 -1
- package/src/lib/design/system/list-system.js +13 -3
- 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 +665 -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 +40 -0
- package/src/lib/design/system/live-uncovered.js +123 -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/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/open-points.d.ts +119 -0
- package/src/lib/design/system/open-points.js +185 -0
- package/src/lib/design/system/open-points.js.map +1 -0
- package/src/lib/design/system/part-build-ready.d.ts +39 -0
- package/src/lib/design/system/part-build-ready.js +107 -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 +123 -0
- package/src/lib/design/system/part-compare.js +396 -0
- package/src/lib/design/system/part-compare.js.map +1 -0
- package/src/lib/design/system/part-go.d.ts +70 -0
- package/src/lib/design/system/part-go.js +94 -0
- package/src/lib/design/system/part-go.js.map +1 -0
- package/src/lib/design/system/part-ready.d.ts +90 -0
- package/src/lib/design/system/part-ready.js +172 -0
- package/src/lib/design/system/part-ready.js.map +1 -0
- package/src/lib/design/system/part-task.d.ts +147 -0
- package/src/lib/design/system/part-task.js +285 -0
- package/src/lib/design/system/part-task.js.map +1 -0
- package/src/lib/design/system/pointer-focus.d.ts +81 -0
- package/src/lib/design/system/pointer-focus.js +152 -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 +36 -0
- package/src/lib/design/system/prettier.js.map +1 -0
- 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 +33 -0
- package/src/lib/design/system/read-open-points.js +110 -0
- package/src/lib/design/system/read-open-points.js.map +1 -0
- package/src/lib/design/system/ready-command.d.ts +11 -0
- package/src/lib/design/system/ready-command.js +82 -0
- package/src/lib/design/system/ready-command.js.map +1 -0
- package/src/lib/design/system/render-check.d.ts +52 -0
- package/src/lib/design/system/render-check.js +479 -60
- package/src/lib/design/system/render-check.js.map +1 -1
- package/src/lib/design/system/resolve-product.d.ts +2 -1
- package/src/lib/design/system/resolve-product.js +25 -3
- package/src/lib/design/system/resolve-product.js.map +1 -1
- 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 +2 -0
- package/src/lib/design/system/rules/canonical-class.js +36 -110
- package/src/lib/design/system/rules/canonical-class.js.map +1 -1
- package/src/lib/design/system/rules/capability-place.d.ts +44 -0
- package/src/lib/design/system/rules/capability-place.js +116 -0
- package/src/lib/design/system/rules/capability-place.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/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 +61 -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.d.ts +8 -0
- package/src/lib/design/system/rules/implements.js +48 -0
- package/src/lib/design/system/rules/implements.js.map +1 -0
- 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 +2 -0
- package/src/lib/design/system/rules/motion.js +35 -2
- 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 +64 -0
- package/src/lib/design/system/rules/native-title.js.map +1 -0
- package/src/lib/design/system/rules/option-values.d.ts +15 -0
- package/src/lib/design/system/rules/option-values.js +145 -0
- package/src/lib/design/system/rules/option-values.js.map +1 -0
- 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/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/stale-replace.js +45 -3
- 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 +51 -0
- package/src/lib/design/system/rules/tailwind-classes.js +232 -0
- package/src/lib/design/system/rules/tailwind-classes.js.map +1 -0
- 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 +5 -0
- package/src/lib/design/system/rules/unbound-input-known.js +47 -0
- package/src/lib/design/system/rules/unbound-input-known.js.map +1 -0
- package/src/lib/design/system/rules/unbound-input.d.ts +22 -0
- package/src/lib/design/system/rules/unbound-input.js +61 -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 +32 -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 +29 -14
- 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 +20 -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-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/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/settled-panes.d.ts +18 -0
- package/src/lib/design/system/settled-panes.js +70 -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 +29 -2
- package/src/lib/design/system/sketch/baseline.js +33 -9
- package/src/lib/design/system/sketch/baseline.js.map +1 -1
- package/src/lib/design/system/sketch/check-sketches.d.ts +11 -0
- package/src/lib/design/system/sketch/check-sketches.js +54 -6
- package/src/lib/design/system/sketch/check-sketches.js.map +1 -1
- package/src/lib/design/system/sketch/cli-args.d.ts +12 -2
- package/src/lib/design/system/sketch/cli-args.js +18 -3
- package/src/lib/design/system/sketch/cli-args.js.map +1 -1
- package/src/lib/design/system/sketch/edit-sketch.d.ts +21 -0
- package/src/lib/design/system/sketch/edit-sketch.js +117 -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 +137 -0
- package/src/lib/design/system/sketch/identical-renders.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 +35 -0
- package/src/lib/design/system/sketch/merge-step.js +98 -0
- package/src/lib/design/system/sketch/merge-step.js.map +1 -0
- package/src/lib/design/system/sketch/merge.d.ts +10 -3
- package/src/lib/design/system/sketch/merge.js +122 -17
- 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 +41 -11
- package/src/lib/design/system/sketch/merged-parts.js +113 -50
- 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/part-definition.d.ts +56 -0
- package/src/lib/design/system/sketch/part-definition.js +129 -13
- 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 +170 -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-worker.d.ts +1 -0
- package/src/lib/design/system/sketch/sketch-check-worker.js +27 -0
- package/src/lib/design/system/sketch/sketch-check-worker.js.map +1 -0
- package/src/lib/design/system/sketch/sketch-checker.d.ts +27 -0
- package/src/lib/design/system/sketch/sketch-checker.js +99 -0
- package/src/lib/design/system/sketch/sketch-checker.js.map +1 -0
- package/src/lib/design/system/sketch/sketch.d.ts +78 -2
- package/src/lib/design/system/sketch/sketch.js +247 -54
- 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 +36 -1
- package/src/lib/design/system/sketch/unchanged-states.js +60 -17
- package/src/lib/design/system/sketch/unchanged-states.js.map +1 -1
- package/src/lib/design/system/sketch/unused-closure.js +26 -4
- package/src/lib/design/system/sketch/unused-closure.js.map +1 -1
- package/src/lib/design/system/sketch/unused-files.d.ts +1 -1
- package/src/lib/design/system/sketch/unused-files.js +6 -3
- package/src/lib/design/system/sketch/unused-files.js.map +1 -1
- package/src/lib/design/system/sketch/viewed-shots.d.ts +24 -0
- package/src/lib/design/system/sketch/viewed-shots.js +61 -0
- package/src/lib/design/system/sketch/viewed-shots.js.map +1 -0
- package/src/lib/design/system/slow-checks.d.ts +40 -0
- package/src/lib/design/system/slow-checks.js +197 -0
- package/src/lib/design/system/slow-checks.js.map +1 -0
- package/src/lib/design/system/slow-run.d.ts +57 -0
- package/src/lib/design/system/slow-run.js +253 -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 +25 -0
- package/src/lib/design/system/stale-dist.js +91 -0
- package/src/lib/design/system/stale-dist.js.map +1 -0
- package/src/lib/design/system/stale-parts.d.ts +30 -0
- package/src/lib/design/system/stale-parts.js +106 -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 +8 -6
- package/src/lib/design/system/system-command.js.map +1 -1
- package/src/lib/design/system/system-modules.d.ts +16 -1
- 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.js +2 -2
- package/src/lib/design/system/system-tsconfig.js.map +1 -1
- package/src/lib/design/system/task-command.d.ts +51 -0
- package/src/lib/design/system/task-command.js +233 -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/tom-confirm.d.ts +40 -0
- package/src/lib/design/system/tom-confirm.js +55 -0
- package/src/lib/design/system/tom-confirm.js.map +1 -0
- package/src/lib/design/system/touched-parts.d.ts +16 -0
- package/src/lib/design/system/touched-parts.js +122 -0
- package/src/lib/design/system/touched-parts.js.map +1 -0
- package/src/lib/design/system/ts-source.d.ts +5 -0
- package/src/lib/design/system/ts-source.js +35 -4
- package/src/lib/design/system/ts-source.js.map +1 -1
- package/src/lib/design/system/unchanged-rows.d.ts +15 -0
- package/src/lib/design/system/unchanged-rows.js +134 -0
- package/src/lib/design/system/unchanged-rows.js.map +1 -0
- package/src/lib/design/system/uncommitted-decisions.d.ts +6 -0
- package/src/lib/design/system/uncommitted-decisions.js +38 -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 +48 -0
- package/src/lib/design/system/visible-change-command.js +308 -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/thumb.d.ts +50 -6
- package/src/lib/design/thumb.js +154 -54
- package/src/lib/design/thumb.js.map +1 -1
- package/src/lib/design/typecheck.d.ts +1 -1
- package/src/lib/design/typecheck.js +3 -3
- 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/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/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/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/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/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/tasks.js +2 -1
- package/src/lib/update/tasks.js.map +1 -1
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
export type FrameSurfaceTheme = {
|
|
2
|
+
name: string;
|
|
3
|
+
type: string;
|
|
4
|
+
elevation: number;
|
|
5
|
+
isDefault: boolean;
|
|
6
|
+
colorThemeVariants: Partial<Record<string, string>>;
|
|
7
|
+
};
|
|
8
|
+
export type FrameColorTheme = { name: string; type: string | null; isDefault: boolean };
|
|
9
|
+
export type FrameThemes = { surfaces: FrameSurfaceTheme[]; colors: FrameColorTheme[] };
|
|
10
|
+
|
|
11
|
+
export const AUTO_SURFACE_ATTRIBUTE = 'data-et-auto-surface';
|
|
12
|
+
export const SURFACE_INTERACTIVE_ATTRIBUTE = 'data-et-surface-interactive';
|
|
13
|
+
export const SEMANTIC_COLOR_ATTRIBUTE = 'data-et-semantic-color';
|
|
14
|
+
|
|
15
|
+
const SURFACE_CLASS_PREFIX = 'et-surface--';
|
|
16
|
+
const COLOR_CLASS_PREFIX = 'et-color--';
|
|
17
|
+
const SURFACE_INTERACTIVE_CLASS = 'et-surface-interactive';
|
|
18
|
+
const SURFACE_CLASS_SELECTOR = /^\.et-surface--([\w-]+)$/u;
|
|
19
|
+
const COLOR_CLASS_SELECTOR = /^\.et-color--([\w-]+)$/u;
|
|
20
|
+
const RESERVED_COLORS = new Set(['default', 'surface']);
|
|
21
|
+
|
|
22
|
+
const surfaceVarsOf = (style: CSSStyleDeclaration) => {
|
|
23
|
+
const type = style.getPropertyValue('--et-surface-type').trim();
|
|
24
|
+
const elevation = Number.parseInt(style.getPropertyValue('--et-surface-elevation'), 10);
|
|
25
|
+
|
|
26
|
+
return type && Number.isFinite(elevation) ? { type, elevation } : null;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const colorThemeVariantsOf = (style: CSSStyleDeclaration) =>
|
|
30
|
+
Object.fromEntries(
|
|
31
|
+
style
|
|
32
|
+
.getPropertyValue('--et-surface-color-theme-variants')
|
|
33
|
+
.split(',')
|
|
34
|
+
.map((entry) => entry.trim().split(/\s+/u))
|
|
35
|
+
.filter((pair): pair is [string, string] => pair.length === 2),
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
const scopeNamesOf = (rule: CSSStyleRule, selector: RegExp) =>
|
|
39
|
+
rule.selectorText
|
|
40
|
+
.split(',')
|
|
41
|
+
.map((part) => selector.exec(part.trim())?.[1])
|
|
42
|
+
.filter((name): name is string => name !== undefined);
|
|
43
|
+
|
|
44
|
+
const themesOfRules = (rules: CSSRuleList, themes: FrameThemes) => {
|
|
45
|
+
for (const rule of Array.from(rules)) {
|
|
46
|
+
if (rule instanceof CSSStyleRule) {
|
|
47
|
+
const surface = surfaceVarsOf(rule.style);
|
|
48
|
+
|
|
49
|
+
if (surface) {
|
|
50
|
+
const names = scopeNamesOf(rule, SURFACE_CLASS_SELECTOR);
|
|
51
|
+
const isDefault = names.includes(`default-${surface.type}`);
|
|
52
|
+
const registered = names.length > 1 ? names.filter((name) => name !== `default-${surface.type}`) : names;
|
|
53
|
+
const colorThemeVariants = colorThemeVariantsOf(rule.style);
|
|
54
|
+
|
|
55
|
+
registered.forEach((name) => themes.surfaces.push({ name, ...surface, isDefault, colorThemeVariants }));
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (rule.style.getPropertyValue('--et-color-primary')) {
|
|
59
|
+
const names = scopeNamesOf(rule, COLOR_CLASS_SELECTOR);
|
|
60
|
+
const type = rule.style.getPropertyValue('--et-color-theme-type').trim() || null;
|
|
61
|
+
const isDefault = names.includes('default');
|
|
62
|
+
|
|
63
|
+
names
|
|
64
|
+
.filter((name) => !RESERVED_COLORS.has(name))
|
|
65
|
+
.forEach((name) => themes.colors.push({ name, type, isDefault }));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if ('cssRules' in rule) themesOfRules((rule as CSSGroupingRule).cssRules, themes);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return themes;
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
const sheetThemes = new WeakMap<CSSStyleSheet, FrameThemes>();
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* The surface and colour themes the frame's stylesheets register, as the SDK's generated theme CSS writes them: every
|
|
79
|
+
* `.et-surface--<name>` rule that sets `--et-surface-type` and `--et-surface-elevation` (with its
|
|
80
|
+
* `--et-surface-color-theme-variants`), and every `.et-color--<name>` rule that sets `--et-color-primary` (with its
|
|
81
|
+
* `--et-color-theme-type`).
|
|
82
|
+
*/
|
|
83
|
+
export const registeredThemesOf = (document: Document): FrameThemes => {
|
|
84
|
+
const all: FrameThemes = { surfaces: [], colors: [] };
|
|
85
|
+
|
|
86
|
+
for (const sheet of Array.from(document.styleSheets)) {
|
|
87
|
+
let themes = sheetThemes.get(sheet);
|
|
88
|
+
|
|
89
|
+
if (!themes) {
|
|
90
|
+
try {
|
|
91
|
+
themes = themesOfRules(sheet.cssRules, { surfaces: [], colors: [] });
|
|
92
|
+
} catch {
|
|
93
|
+
// A cross-origin sheet hides its rules.
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
sheetThemes.set(sheet, themes);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
all.surfaces.push(...themes.surfaces);
|
|
101
|
+
all.colors.push(...themes.colors);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
return all;
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
const surfaceThemeOf = (element: Element, themes: FrameSurfaceTheme[]): FrameSurfaceTheme | null => {
|
|
108
|
+
for (let current: Element | null = element; current; current = current.parentElement) {
|
|
109
|
+
for (const className of Array.from(current.classList)) {
|
|
110
|
+
if (!className.startsWith(SURFACE_CLASS_PREFIX)) continue;
|
|
111
|
+
|
|
112
|
+
const name = className.slice(SURFACE_CLASS_PREFIX.length);
|
|
113
|
+
const theme = themes.find((candidate) =>
|
|
114
|
+
name.startsWith('default-')
|
|
115
|
+
? candidate.isDefault && `default-${candidate.type}` === name
|
|
116
|
+
: candidate.name === name,
|
|
117
|
+
);
|
|
118
|
+
|
|
119
|
+
if (theme) return theme;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
const vars = surfaceVarsOf(getComputedStyle(element));
|
|
124
|
+
const matches = vars ? themes.filter((theme) => theme.type === vars.type && theme.elevation === vars.elevation) : [];
|
|
125
|
+
|
|
126
|
+
return matches.find((theme) => theme.isDefault) ?? matches[0] ?? null;
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
const colorVariantOf = (
|
|
130
|
+
surface: FrameSurfaceTheme | null,
|
|
131
|
+
{ chosen, colors }: { chosen: string; colors: FrameColorTheme[] },
|
|
132
|
+
) => {
|
|
133
|
+
const variant = surface?.colorThemeVariants[chosen];
|
|
134
|
+
|
|
135
|
+
return variant && colors.some((theme) => theme.name === variant) ? variant : chosen;
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
const appliedSurface = new WeakMap<Element, string>();
|
|
139
|
+
const appliedColor = new WeakMap<Element, { chosen: string; variant: string }>();
|
|
140
|
+
|
|
141
|
+
const defaultColorOf = (colors: FrameColorTheme[]) => colors.find((theme) => theme.isDefault)?.name ?? null;
|
|
142
|
+
|
|
143
|
+
const chosenColorOf = (element: Element | null, colors: FrameColorTheme[]) => {
|
|
144
|
+
for (let current = element; current; current = current.parentElement) {
|
|
145
|
+
const applied = appliedColor.get(current);
|
|
146
|
+
|
|
147
|
+
if (applied) return applied.chosen;
|
|
148
|
+
|
|
149
|
+
for (const className of Array.from(current.classList)) {
|
|
150
|
+
if (!className.startsWith(COLOR_CLASS_PREFIX)) continue;
|
|
151
|
+
|
|
152
|
+
const name = className.slice(COLOR_CLASS_PREFIX.length);
|
|
153
|
+
|
|
154
|
+
if (name === 'default') return defaultColorOf(colors);
|
|
155
|
+
if (colors.some((theme) => theme.name === name)) return name;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
return defaultColorOf(colors);
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
const applyColor = (element: Element, color: { chosen: string; variant: string } | null) => {
|
|
163
|
+
const previous = appliedColor.get(element);
|
|
164
|
+
|
|
165
|
+
if (previous && previous.variant !== color?.variant)
|
|
166
|
+
element.classList.remove(`${COLOR_CLASS_PREFIX}${previous.variant}`);
|
|
167
|
+
|
|
168
|
+
if (!color) {
|
|
169
|
+
appliedColor.delete(element);
|
|
170
|
+
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
appliedColor.set(element, color);
|
|
175
|
+
if (!element.classList.contains(`${COLOR_CLASS_PREFIX}${color.variant}`))
|
|
176
|
+
element.classList.add(`${COLOR_CLASS_PREFIX}${color.variant}`);
|
|
177
|
+
};
|
|
178
|
+
|
|
179
|
+
const resolveAutoSurface = (element: Element, themes: FrameSurfaceTheme[]) => {
|
|
180
|
+
const parent = element.parentElement ? surfaceVarsOf(getComputedStyle(element.parentElement)) : null;
|
|
181
|
+
const name = parent
|
|
182
|
+
? (themes.find((theme) => theme.type === parent.type && theme.elevation === parent.elevation + 1)?.name ?? null)
|
|
183
|
+
: null;
|
|
184
|
+
const previous = appliedSurface.get(element);
|
|
185
|
+
|
|
186
|
+
if (previous !== undefined && previous !== name) element.classList.remove(`${SURFACE_CLASS_PREFIX}${previous}`);
|
|
187
|
+
|
|
188
|
+
if (name === null) {
|
|
189
|
+
appliedSurface.delete(element);
|
|
190
|
+
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
appliedSurface.set(element, name);
|
|
195
|
+
if (!element.classList.contains(`${SURFACE_CLASS_PREFIX}${name}`))
|
|
196
|
+
element.classList.add(`${SURFACE_CLASS_PREFIX}${name}`);
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
const resolveColor = (element: Element, themes: FrameThemes) => {
|
|
200
|
+
const type = element.getAttribute(SEMANTIC_COLOR_ATTRIBUTE);
|
|
201
|
+
|
|
202
|
+
if (type) {
|
|
203
|
+
const chosen = themes.colors.find((theme) => theme.type === type)?.name;
|
|
204
|
+
|
|
205
|
+
applyColor(
|
|
206
|
+
element,
|
|
207
|
+
chosen
|
|
208
|
+
? {
|
|
209
|
+
chosen,
|
|
210
|
+
variant: colorVariantOf(surfaceThemeOf(element, themes.surfaces), { chosen, colors: themes.colors }),
|
|
211
|
+
}
|
|
212
|
+
: null,
|
|
213
|
+
);
|
|
214
|
+
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
const chosen = element.hasAttribute(AUTO_SURFACE_ATTRIBUTE)
|
|
219
|
+
? chosenColorOf(element.parentElement, themes.colors)
|
|
220
|
+
: null;
|
|
221
|
+
|
|
222
|
+
if (!chosen || !element.parentElement) {
|
|
223
|
+
applyColor(element, null);
|
|
224
|
+
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
const variant = colorVariantOf(surfaceThemeOf(element, themes.surfaces), { chosen, colors: themes.colors });
|
|
229
|
+
const inherited = colorVariantOf(surfaceThemeOf(element.parentElement, themes.surfaces), {
|
|
230
|
+
chosen,
|
|
231
|
+
colors: themes.colors,
|
|
232
|
+
});
|
|
233
|
+
|
|
234
|
+
applyColor(element, variant === inherited ? null : { chosen, variant });
|
|
235
|
+
};
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* Resolves the theming attributes under `root` in document order, outer first: `[data-et-auto-surface]` gets the
|
|
239
|
+
* `et-surface--<name>` class of the theme one elevation above the surface it sits on, with the same type, like
|
|
240
|
+
* `etAutoSurface` (without such a theme it keeps the parent surface), plus the class of that surface's
|
|
241
|
+
* `colorThemeVariants` swap of the inherited accent, like `etProvideSurface`. `[data-et-semantic-color="<type>"]`
|
|
242
|
+
* gets the `et-color--<name>` class of the first colour theme of that type, swapped for its surface, like
|
|
243
|
+
* `injectSemanticColorTheme`; without a theme of that type it gets none.
|
|
244
|
+
*/
|
|
245
|
+
export const resolveTheming = (root: ParentNode, themes: FrameThemes) => {
|
|
246
|
+
for (const element of Array.from(
|
|
247
|
+
root.querySelectorAll(`[${AUTO_SURFACE_ATTRIBUTE}], [${SEMANTIC_COLOR_ATTRIBUTE}]`),
|
|
248
|
+
)) {
|
|
249
|
+
if (element.hasAttribute(AUTO_SURFACE_ATTRIBUTE)) resolveAutoSurface(element, themes.surfaces);
|
|
250
|
+
|
|
251
|
+
resolveColor(element, themes);
|
|
252
|
+
}
|
|
253
|
+
};
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* Resolves the theming attributes under `root` now and again after every change of its markup or of the page's
|
|
257
|
+
* stylesheets: auto surfaces and semantic colours as `resolveTheming`, and `[data-et-surface-interactive]` as `etSurfaceInteractive`, whose CSS
|
|
258
|
+
* (`interactiveCss`) goes into the page once. Returns the resolve function.
|
|
259
|
+
*/
|
|
260
|
+
export const watchSurfaces = (root: HTMLElement, interactiveCss: string) => {
|
|
261
|
+
const document = root.ownerDocument;
|
|
262
|
+
let styled = false;
|
|
263
|
+
|
|
264
|
+
const resolve = () => {
|
|
265
|
+
const interactive = Array.from(root.querySelectorAll(`[${SURFACE_INTERACTIVE_ATTRIBUTE}]`));
|
|
266
|
+
|
|
267
|
+
interactive.forEach((element) => {
|
|
268
|
+
if (!element.classList.contains(SURFACE_INTERACTIVE_CLASS)) element.classList.add(SURFACE_INTERACTIVE_CLASS);
|
|
269
|
+
});
|
|
270
|
+
|
|
271
|
+
if (interactive.length > 0 && !styled) {
|
|
272
|
+
const style = document.createElement('style');
|
|
273
|
+
|
|
274
|
+
styled = true;
|
|
275
|
+
style.textContent = interactiveCss;
|
|
276
|
+
document.head.append(style);
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
if (root.querySelector(`[${AUTO_SURFACE_ATTRIBUTE}], [${SEMANTIC_COLOR_ATTRIBUTE}]`))
|
|
280
|
+
resolveTheming(root, registeredThemesOf(document));
|
|
281
|
+
};
|
|
282
|
+
|
|
283
|
+
resolve();
|
|
284
|
+
|
|
285
|
+
new MutationObserver(resolve).observe(root, {
|
|
286
|
+
childList: true,
|
|
287
|
+
subtree: true,
|
|
288
|
+
attributes: true,
|
|
289
|
+
attributeFilter: ['class', AUTO_SURFACE_ATTRIBUTE, SURFACE_INTERACTIVE_ATTRIBUTE, SEMANTIC_COLOR_ATTRIBUTE],
|
|
290
|
+
});
|
|
291
|
+
new MutationObserver(resolve).observe(document.head, { childList: true, subtree: true, characterData: true });
|
|
292
|
+
|
|
293
|
+
return resolve;
|
|
294
|
+
};
|
package/design/web/frame.ts
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
|
-
import { CallVariant, Drawing, fitOutOfFlow, mountDrawing, placeOverlays } from '../define-call';
|
|
2
|
-
import { Part } from '../define-part';
|
|
1
|
+
import { CallVariant, Drawing, fitOutOfFlow, mountDrawing, placeOverlays, withNgStyles } from '../define-call';
|
|
2
|
+
import { drawState, Motion, Part } from '../define-part';
|
|
3
3
|
import { applyEmbed, fitEmbed } from '../embed-page';
|
|
4
|
+
import { paintFill } from './frame-fill';
|
|
5
|
+
import { fitRoot } from './frame-fit';
|
|
6
|
+
import { pinScheme } from './frame-scheme';
|
|
7
|
+
import { watchSurfaces } from './frame-surfaces';
|
|
8
|
+
import surfaceInteractiveCss from './surface-interactive.css?inline';
|
|
9
|
+
import { createMotionDriver, emulateReducedMotion, motionDriveMessageOf } from '../motion-drive';
|
|
4
10
|
import { runRules, stepMotion, SteppedMotion } from '../motion-runtime';
|
|
11
|
+
import { rootTokensOf, withTokenNames } from '../motion-tokens';
|
|
5
12
|
import { calls } from 'virtual:design-explore';
|
|
6
13
|
import { loadEnv, loadProductEnv } from 'virtual:design-explore/env';
|
|
7
14
|
import { parts, sketchParts, sketchTokens, tokens } from 'virtual:design-explore/system';
|
|
@@ -40,12 +47,12 @@ const fill = params.get('fill');
|
|
|
40
47
|
// On <html> a theme class ties with the `:root` defaults of the theme CSS, which come later and win.
|
|
41
48
|
if (surface) root.classList.add(`et-surface--${surface}`);
|
|
42
49
|
if (color) root.classList.add(`et-color--${color}`);
|
|
43
|
-
if (fill) document.body
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}
|
|
50
|
+
if (fill) paintFill(document.body, fill);
|
|
51
|
+
|
|
52
|
+
const scheme = params.get('scheme');
|
|
53
|
+
|
|
54
|
+
if (scheme === 'light' || scheme === 'dark') pinScheme(document, scheme);
|
|
55
|
+
if (fit) fitRoot(root, { padded: !params.has('bare') });
|
|
49
56
|
|
|
50
57
|
const markFailed = (message: string) => {
|
|
51
58
|
errored = true;
|
|
@@ -66,6 +73,12 @@ const fail = (message: string) => {
|
|
|
66
73
|
return null;
|
|
67
74
|
};
|
|
68
75
|
|
|
76
|
+
const failMissing = (message: string) => {
|
|
77
|
+
document.documentElement.setAttribute('data-et-missing', '');
|
|
78
|
+
|
|
79
|
+
return fail(message);
|
|
80
|
+
};
|
|
81
|
+
|
|
69
82
|
const showSetupError = (message: string) => {
|
|
70
83
|
markFailed(message);
|
|
71
84
|
|
|
@@ -96,21 +109,44 @@ let drawnPart: { part: Part<unknown>; states: Record<string, unknown> } | null =
|
|
|
96
109
|
|
|
97
110
|
const drawCall = async (): Promise<Drawing | null> => {
|
|
98
111
|
const call = calls[slug];
|
|
99
|
-
if (!call) return
|
|
112
|
+
if (!call) return failMissing(`design-explore: no call "${slug}"`);
|
|
100
113
|
|
|
101
114
|
const variant: CallVariant | undefined = (await call()).default.variants.find((o) => o.key === key);
|
|
102
|
-
if (!variant) return
|
|
115
|
+
if (!variant) return failMissing(`design-explore: call "${slug}" has no variant "${key}"`);
|
|
116
|
+
|
|
117
|
+
return variant
|
|
118
|
+
.load()
|
|
119
|
+
.then((module) => module.default)
|
|
120
|
+
.then(
|
|
121
|
+
(drawn) => withNgStyles(drawn),
|
|
122
|
+
(error: unknown) => fail(`design-explore: variant "${key}" failed\n${messageOf(error)}`),
|
|
123
|
+
);
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
const composeParam = product ? params.get('compose') : null;
|
|
127
|
+
|
|
128
|
+
/** Makes each part named in the `compose` param draw with its props merged over the props its user passes. */
|
|
129
|
+
const composed = async (name: string) => {
|
|
130
|
+
const overrides = composeParam ? (JSON.parse(composeParam) as Record<string, Record<string, unknown>>) : {};
|
|
103
131
|
|
|
104
|
-
|
|
105
|
-
(
|
|
106
|
-
|
|
132
|
+
await Promise.all(
|
|
133
|
+
Object.entries(overrides).map(async ([used, props]) => {
|
|
134
|
+
const load = parts[name]?.[used];
|
|
135
|
+
|
|
136
|
+
if (!load) throw new Error(`design-explore: product "${name}" has no part "${used}" to compose`);
|
|
137
|
+
|
|
138
|
+
const { default: part } = await retried(load);
|
|
139
|
+
const render = part.render.bind(part);
|
|
140
|
+
|
|
141
|
+
part.render = (given: unknown) => render({ ...(given as Record<string, unknown>), ...props });
|
|
142
|
+
}),
|
|
107
143
|
);
|
|
108
144
|
};
|
|
109
145
|
|
|
110
146
|
const drawPart = async (name: string): Promise<Drawing | null> => {
|
|
111
147
|
const load = sketch ? sketchParts[name]?.[sketch]?.[sketchVariant]?.[partKey] : parts[name]?.[partKey];
|
|
112
148
|
if (!load)
|
|
113
|
-
return
|
|
149
|
+
return failMissing(
|
|
114
150
|
sketch
|
|
115
151
|
? `design-explore: variant "${sketchVariant}" of the sketch on ${sketch} in product "${name}" has no part "${partKey}"`
|
|
116
152
|
: `design-explore: product "${name}" has no part "${partKey}"`,
|
|
@@ -118,18 +154,20 @@ const drawPart = async (name: string): Promise<Drawing | null> => {
|
|
|
118
154
|
|
|
119
155
|
const loadProps = propsSketch ? sketchParts[name]?.[propsSketch]?.[propsVariant]?.[partKey] : load;
|
|
120
156
|
if (!loadProps)
|
|
121
|
-
return
|
|
157
|
+
return failMissing(
|
|
122
158
|
`design-explore: variant "${propsVariant}" of the sketch on ${propsSketch} in product "${name}" has no part "${partKey}"`,
|
|
123
159
|
);
|
|
124
160
|
|
|
125
161
|
try {
|
|
162
|
+
await composed(name);
|
|
163
|
+
|
|
126
164
|
const [{ default: part }, { default: holder }] = await Promise.all([retried(load), retried(loadProps)]);
|
|
127
165
|
|
|
128
|
-
if (!(key in holder.states)) return
|
|
166
|
+
if (!(key in holder.states)) return failMissing(`design-explore: part "${partKey}" has no state "${key}"`);
|
|
129
167
|
|
|
130
168
|
drawnPart = { part: part as Part<unknown>, states: holder.states };
|
|
131
169
|
|
|
132
|
-
return await part
|
|
170
|
+
return await drawState(part as Part<unknown>, holder.states[key]);
|
|
133
171
|
} catch (error) {
|
|
134
172
|
return fail(`design-explore: state "${key}" of "${partKey}" failed\n${messageOf(error)}`);
|
|
135
173
|
}
|
|
@@ -148,7 +186,7 @@ const force = (element: Element, name: string) => {
|
|
|
148
186
|
if (name === 'disabled') {
|
|
149
187
|
element.setAttribute('disabled', '');
|
|
150
188
|
element.setAttribute('aria-disabled', 'true');
|
|
151
|
-
} else {
|
|
189
|
+
} else if (!element.hasAttribute('disabled') && element.getAttribute('aria-disabled') !== 'true') {
|
|
152
190
|
element.setAttribute('data-et-force', name);
|
|
153
191
|
}
|
|
154
192
|
};
|
|
@@ -181,11 +219,16 @@ const report = () => {
|
|
|
181
219
|
);
|
|
182
220
|
};
|
|
183
221
|
|
|
222
|
+
const reportPainted = () =>
|
|
223
|
+
requestAnimationFrame(() =>
|
|
224
|
+
requestAnimationFrame(() => parent.postMessage({ type: 'design-explore:painted', variant: key }, '*')),
|
|
225
|
+
);
|
|
226
|
+
|
|
184
227
|
const stateMarkupOf = ({ part, states }: NonNullable<typeof drawnPart>, styles: string) => {
|
|
185
228
|
const sheets = new Set([styles]);
|
|
186
229
|
|
|
187
230
|
return (state: string) =>
|
|
188
|
-
|
|
231
|
+
drawState(part, states[state]).then((drawn) =>
|
|
189
232
|
sheets.has(drawn.styles)
|
|
190
233
|
? drawn.body
|
|
191
234
|
: forced(drawn.styles).then((css) => {
|
|
@@ -218,11 +261,53 @@ const exposeStepped = (options: { start: () => Promise<SteppedMotion>; interrupt
|
|
|
218
261
|
}),
|
|
219
262
|
seek: (ms: number) => steppedOf().seek(ms),
|
|
220
263
|
bounds: () => steppedOf().bounds(),
|
|
221
|
-
timeline: () =>
|
|
264
|
+
timeline: () => {
|
|
265
|
+
const tokens = rootTokensOf(document);
|
|
266
|
+
|
|
267
|
+
return {
|
|
268
|
+
end: steppedOf().end(),
|
|
269
|
+
tracks: steppedOf()
|
|
270
|
+
.tracks()
|
|
271
|
+
.map((track) => withTokenNames(track, tokens)),
|
|
272
|
+
interrupt: options.interrupt,
|
|
273
|
+
};
|
|
274
|
+
},
|
|
222
275
|
},
|
|
223
276
|
});
|
|
224
277
|
};
|
|
225
278
|
|
|
279
|
+
const motionStartOf = (options: {
|
|
280
|
+
drawn: NonNullable<typeof drawnPart>;
|
|
281
|
+
motion: Motion;
|
|
282
|
+
markupOf: (state: string) => Promise<string>;
|
|
283
|
+
switching?: () => void;
|
|
284
|
+
}) => {
|
|
285
|
+
const { drawn, motion, markupOf } = options;
|
|
286
|
+
|
|
287
|
+
return () =>
|
|
288
|
+
Promise.all([markupOf(motion.to), motion.interrupt === undefined ? null : markupOf(motion.from)]).then(
|
|
289
|
+
([markup, back]) => {
|
|
290
|
+
options.switching?.();
|
|
291
|
+
|
|
292
|
+
return stepMotion({
|
|
293
|
+
root,
|
|
294
|
+
markup,
|
|
295
|
+
motion,
|
|
296
|
+
...(back === null
|
|
297
|
+
? {}
|
|
298
|
+
: {
|
|
299
|
+
reverse: {
|
|
300
|
+
markup: back,
|
|
301
|
+
motion: Object.values(drawn.part.motions ?? {}).find(
|
|
302
|
+
(other) => other.from === motion.to && other.to === motion.from,
|
|
303
|
+
),
|
|
304
|
+
},
|
|
305
|
+
}),
|
|
306
|
+
});
|
|
307
|
+
},
|
|
308
|
+
);
|
|
309
|
+
};
|
|
310
|
+
|
|
226
311
|
const exposeMotion = (options: { drawn: NonNullable<typeof drawnPart>; name: string; styles: string }) => {
|
|
227
312
|
const { drawn, name, styles } = options;
|
|
228
313
|
const motion = drawn.part.motions?.[name];
|
|
@@ -235,29 +320,57 @@ const exposeMotion = (options: { drawn: NonNullable<typeof drawnPart>; name: str
|
|
|
235
320
|
return;
|
|
236
321
|
}
|
|
237
322
|
|
|
238
|
-
const markupOf = stateMarkupOf(drawn, styles);
|
|
239
|
-
|
|
240
323
|
exposeStepped({
|
|
241
324
|
interrupt: motion.interrupt ?? null,
|
|
242
|
-
start: ()
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
325
|
+
start: motionStartOf({ drawn, motion, markupOf: stateMarkupOf(drawn, styles) }),
|
|
326
|
+
});
|
|
327
|
+
};
|
|
328
|
+
|
|
329
|
+
const settleAnimations = () => {
|
|
330
|
+
for (const animation of document.getAnimations()) {
|
|
331
|
+
if (Number.isFinite(animation.effect?.getComputedTiming().endTime)) animation.finish();
|
|
332
|
+
else animation.cancel();
|
|
333
|
+
}
|
|
334
|
+
};
|
|
335
|
+
|
|
336
|
+
const listenForDrive = (drawn: NonNullable<typeof drawnPart>, styles: string) => {
|
|
337
|
+
const markupOf = stateMarkupOf(drawn, styles);
|
|
338
|
+
const drawnMarkup = root.innerHTML;
|
|
339
|
+
let restore: () => void = () => undefined;
|
|
340
|
+
|
|
341
|
+
const driver = createMotionDriver({
|
|
342
|
+
document,
|
|
343
|
+
reply: (answer) => parent.postMessage({ ...answer, variant: key }, '*'),
|
|
344
|
+
released: () => {
|
|
345
|
+
restore();
|
|
346
|
+
restore = () => undefined;
|
|
347
|
+
},
|
|
348
|
+
start: (name, reduced) => {
|
|
349
|
+
const motion = drawn.part.motions?.[name];
|
|
350
|
+
|
|
351
|
+
if (!motion) return Promise.reject(new Error(`design-explore: part "${partKey}" has no motion "${name}"`));
|
|
352
|
+
if (motion.from !== key)
|
|
353
|
+
return Promise.reject(new Error(`design-explore: motion "${name}" starts at "${motion.from}", not "${key}"`));
|
|
354
|
+
|
|
355
|
+
settleAnimations();
|
|
356
|
+
restore();
|
|
357
|
+
root.innerHTML = drawnMarkup;
|
|
358
|
+
|
|
359
|
+
return motionStartOf({
|
|
360
|
+
drawn,
|
|
361
|
+
motion,
|
|
362
|
+
markupOf,
|
|
363
|
+
switching: () => {
|
|
364
|
+
restore = emulateReducedMotion(document, reduced);
|
|
365
|
+
},
|
|
366
|
+
})();
|
|
367
|
+
},
|
|
368
|
+
});
|
|
369
|
+
|
|
370
|
+
addEventListener('message', (event) => {
|
|
371
|
+
const message = event.source === parent ? motionDriveMessageOf(event.data) : null;
|
|
372
|
+
|
|
373
|
+
if (message) void driver.handle(message);
|
|
261
374
|
});
|
|
262
375
|
};
|
|
263
376
|
|
|
@@ -281,7 +394,7 @@ const exposeFlowLine = (options: { product: string; to: string; styles: string }
|
|
|
281
394
|
|
|
282
395
|
// The styles of the to page ride in the markup: in <head> they would restyle the from page before the View Transition captures it.
|
|
283
396
|
|
|
284
|
-
return
|
|
397
|
+
return drawState(part as Part<unknown>, states[toState])
|
|
285
398
|
.then((drawn) =>
|
|
286
399
|
drawn.styles === options.styles
|
|
287
400
|
? drawn.body
|
|
@@ -327,6 +440,8 @@ const drawFrame = async () => {
|
|
|
327
440
|
style.textContent = await forced(loaded.styles ?? '');
|
|
328
441
|
document.head.append(style);
|
|
329
442
|
const error = mountDrawing(root, loaded);
|
|
443
|
+
|
|
444
|
+
watchSurfaces(root, surfaceInteractiveCss);
|
|
330
445
|
const partRoot = partRootOf(root);
|
|
331
446
|
|
|
332
447
|
if (interaction && partRoot) force(partRoot, interaction);
|
|
@@ -337,6 +452,8 @@ const drawFrame = async () => {
|
|
|
337
452
|
if (flowTo && product) exposeFlowLine({ product, to: flowTo, styles: loaded.styles ?? '' });
|
|
338
453
|
else if (motionName && drawnPart) exposeMotion({ drawn: drawnPart, name: motionName, styles: loaded.styles ?? '' });
|
|
339
454
|
else if (drawnPart?.part.rules?.length) runPartRules(drawnPart, loaded.styles ?? '');
|
|
455
|
+
|
|
456
|
+
if (!flowTo && !motionName && drawnPart) listenForDrive(drawnPart, loaded.styles ?? '');
|
|
340
457
|
}
|
|
341
458
|
|
|
342
459
|
const place = () => {
|
|
@@ -346,7 +463,7 @@ const drawFrame = async () => {
|
|
|
346
463
|
};
|
|
347
464
|
|
|
348
465
|
new MutationObserver(place).observe(root, { childList: true, subtree: true });
|
|
349
|
-
new ResizeObserver(place).observe(root);
|
|
466
|
+
new ResizeObserver(() => requestAnimationFrame(place)).observe(root);
|
|
350
467
|
place();
|
|
351
468
|
|
|
352
469
|
const reported = new ResizeObserver(report);
|
|
@@ -355,6 +472,7 @@ const drawFrame = async () => {
|
|
|
355
472
|
if (fit) reported.observe(root);
|
|
356
473
|
reporting = true;
|
|
357
474
|
report();
|
|
475
|
+
reportPainted();
|
|
358
476
|
|
|
359
477
|
addEventListener('keydown', (event) => {
|
|
360
478
|
if (event.key === 'Escape') parent.postMessage({ type: 'design-explore:escape', variant: key }, '*');
|
|
@@ -371,4 +489,5 @@ void drawFrame().catch((error: unknown) => {
|
|
|
371
489
|
fail(`design-explore: frame failed\n${messageOf(error)}`);
|
|
372
490
|
reporting = true;
|
|
373
491
|
report();
|
|
492
|
+
reportPainted();
|
|
374
493
|
});
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
@layer components {
|
|
2
|
+
:where(.et-surface-interactive) {
|
|
3
|
+
--et-surface-interaction-rgb: var(--et-surface-interaction);
|
|
4
|
+
--et-surface-interaction-solid: rgb(var(--et-surface-interaction-rgb));
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
/* hover-capable pointers only — on touch, :hover sticks after a tap */
|
|
8
|
+
@media (hover: hover) {
|
|
9
|
+
:where(.et-surface-interactive:hover) {
|
|
10
|
+
--et-surface-interaction-rgb: var(--et-surface-interaction-hover, var(--et-surface-interaction));
|
|
11
|
+
--et-surface-interaction-solid: rgb(var(--et-surface-interaction-rgb));
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
:where(.et-surface-interactive:focus-visible) {
|
|
16
|
+
--et-surface-interaction-rgb: var(
|
|
17
|
+
--et-surface-interaction-focus,
|
|
18
|
+
var(--et-surface-interaction-hover, var(--et-surface-interaction))
|
|
19
|
+
);
|
|
20
|
+
--et-surface-interaction-solid: rgb(var(--et-surface-interaction-rgb));
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
:where(.et-surface-interactive:active) {
|
|
24
|
+
--et-surface-interaction-rgb: var(
|
|
25
|
+
--et-surface-interaction-active,
|
|
26
|
+
var(--et-surface-interaction-focus, var(--et-surface-interaction-hover, var(--et-surface-interaction)))
|
|
27
|
+
);
|
|
28
|
+
--et-surface-interaction-solid: rgb(var(--et-surface-interaction-rgb));
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
:where(.et-surface-interactive[disabled]),
|
|
32
|
+
:where(.et-surface-interactive[aria-disabled='true']) {
|
|
33
|
+
--et-surface-interaction-rgb: var(
|
|
34
|
+
--et-surface-interaction-disabled,
|
|
35
|
+
var(
|
|
36
|
+
--et-surface-interaction-active,
|
|
37
|
+
var(--et-surface-interaction-focus, var(--et-surface-interaction-hover, var(--et-surface-interaction)))
|
|
38
|
+
)
|
|
39
|
+
);
|
|
40
|
+
--et-surface-interaction-solid: rgb(var(--et-surface-interaction-rgb));
|
|
41
|
+
}
|
|
42
|
+
}
|