@appinternalleads/ui 0.3.0 → 0.4.1
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/dist/cjs/agent/AgentComponent.js +1 -1
- package/dist/cjs/agent/AgentComponent.js.map +1 -1
- package/dist/cjs/agent/base.js +25 -0
- package/dist/cjs/agent/base.js.map +1 -0
- package/dist/cjs/agent/catalog.js +0 -32
- package/dist/cjs/agent/catalog.js.map +1 -1
- package/dist/cjs/agent/core.js +22 -20
- package/dist/cjs/agent/core.js.map +1 -1
- package/dist/cjs/agent/index.js +6 -5
- package/dist/cjs/agent/index.js.map +1 -1
- package/dist/cjs/agent/manifests.js +81 -1
- package/dist/cjs/agent/manifests.js.map +1 -1
- package/dist/cjs/agent/result.js +6 -0
- package/dist/cjs/agent/result.js.map +1 -1
- package/dist/cjs/agent/search/document.js +50 -0
- package/dist/cjs/agent/search/document.js.map +1 -0
- package/dist/cjs/agent/search/embedding.js +107 -0
- package/dist/cjs/agent/search/embedding.js.map +1 -0
- package/dist/cjs/agent/search/index.js +25 -0
- package/dist/cjs/agent/search/index.js.map +1 -0
- package/dist/cjs/agent/search/lexical.js +28 -0
- package/dist/cjs/agent/search/lexical.js.map +1 -0
- package/dist/cjs/agent/search/normalize.js +15 -0
- package/dist/cjs/agent/search/normalize.js.map +1 -0
- package/dist/cjs/agent/search/search.js +123 -0
- package/dist/cjs/agent/search/search.js.map +1 -0
- package/dist/cjs/agent/search/searchIndex.js +120 -0
- package/dist/cjs/agent/search/searchIndex.js.map +1 -0
- package/dist/cjs/agent/search/types.js +8 -0
- package/dist/cjs/agent/search/types.js.map +1 -0
- package/dist/cjs/agent/search/weights.js +34 -0
- package/dist/cjs/agent/search/weights.js.map +1 -0
- package/dist/cjs/agent/search/wordvectors.json +1 -0
- package/dist/cjs/components/catalog.js +18 -0
- package/dist/cjs/components/catalog.js.map +1 -1
- package/dist/cjs/components/onboarding/animated-status/AnimatedStage.js +21 -0
- package/dist/cjs/components/onboarding/animated-status/AnimatedStage.js.map +1 -0
- package/dist/cjs/components/onboarding/animated-status/AnimatedStage.types.js +6 -0
- package/dist/cjs/components/onboarding/animated-status/AnimatedStage.types.js.map +1 -0
- package/dist/cjs/components/onboarding/animated-status/AnimatedStage.web.js +89 -0
- package/dist/cjs/components/onboarding/animated-status/AnimatedStage.web.js.map +1 -0
- package/dist/cjs/components/onboarding/animated-status/AnimatedStatusView.js +62 -0
- package/dist/cjs/components/onboarding/animated-status/AnimatedStatusView.js.map +1 -0
- package/dist/cjs/components/onboarding/animated-status/AnimatedStill.js +20 -0
- package/dist/cjs/components/onboarding/animated-status/AnimatedStill.js.map +1 -0
- package/dist/cjs/components/onboarding/animated-status/contract.js +87 -0
- package/dist/cjs/components/onboarding/animated-status/contract.js.map +1 -0
- package/dist/cjs/components/onboarding/animated-status/engine.js +40 -0
- package/dist/cjs/components/onboarding/animated-status/engine.js.map +1 -0
- package/dist/cjs/components/onboarding/animated-status/index.js +20 -0
- package/dist/cjs/components/onboarding/animated-status/index.js.map +1 -0
- package/dist/cjs/components/onboarding/animated-status/presets.json +126 -0
- package/dist/cjs/components/onboarding/animated-status/riv.js +7 -0
- package/dist/cjs/components/onboarding/animated-status/riv.js.map +1 -0
- package/dist/cjs/components/onboarding/index.js +4 -0
- package/dist/cjs/components/onboarding/index.js.map +1 -1
- package/dist/cjs/components/onboarding/presets.js +90 -84
- package/dist/cjs/components/onboarding/presets.js.map +1 -1
- package/dist/cjs/components/onboarding/receipt-printer/ReceiptStage.js +43 -6
- package/dist/cjs/components/onboarding/receipt-printer/ReceiptStage.js.map +1 -1
- package/dist/cjs/components/onboarding/send-completion/SendCompletionView.js +111 -0
- package/dist/cjs/components/onboarding/send-completion/SendCompletionView.js.map +1 -0
- package/dist/cjs/components/onboarding/send-completion/SendStage.js +37 -0
- package/dist/cjs/components/onboarding/send-completion/SendStage.js.map +1 -0
- package/dist/cjs/components/onboarding/send-completion/SendStage.types.js +6 -0
- package/dist/cjs/components/onboarding/send-completion/SendStage.types.js.map +1 -0
- package/dist/cjs/components/onboarding/send-completion/SendStage.web.js +107 -0
- package/dist/cjs/components/onboarding/send-completion/SendStage.web.js.map +1 -0
- package/dist/cjs/components/onboarding/send-completion/SendStill.js +17 -0
- package/dist/cjs/components/onboarding/send-completion/SendStill.js.map +1 -0
- package/dist/cjs/components/onboarding/send-completion/contract.js +83 -0
- package/dist/cjs/components/onboarding/send-completion/contract.js.map +1 -0
- package/dist/cjs/components/onboarding/send-completion/engine.js +32 -0
- package/dist/cjs/components/onboarding/send-completion/engine.js.map +1 -0
- package/dist/cjs/components/onboarding/send-completion/index.js +22 -0
- package/dist/cjs/components/onboarding/send-completion/index.js.map +1 -0
- package/dist/cjs/components/onboarding/send-completion/presets.json +132 -0
- package/dist/cjs/components/onboarding/send-completion/riv.js +7 -0
- package/dist/cjs/components/onboarding/send-completion/riv.js.map +1 -0
- package/dist/cjs/components/onboarding/shared/actions-data.js +2 -0
- package/dist/cjs/components/onboarding/shared/actions-data.js.map +1 -1
- package/dist/cjs/components/onboarding/shared/configColor.js +76 -0
- package/dist/cjs/components/onboarding/shared/configColor.js.map +1 -0
- package/dist/cjs/components/onboarding/shared/contract.js +4 -0
- package/dist/cjs/components/onboarding/shared/contract.js.map +1 -1
- package/dist/cjs/components/onboarding/shared/describe.js +1 -1
- package/dist/cjs/components/onboarding/shared/describe.js.map +1 -1
- package/dist/cjs/components/onboarding/shared/mock.js +2 -0
- package/dist/cjs/components/onboarding/shared/mock.js.map +1 -1
- package/dist/cjs/components/onboarding/views.js +8 -0
- package/dist/cjs/components/onboarding/views.js.map +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/motion/MotionPlayer.js +42 -0
- package/dist/cjs/motion/MotionPlayer.js.map +1 -0
- package/dist/cjs/motion/agent.js +323 -0
- package/dist/cjs/motion/agent.js.map +1 -0
- package/dist/cjs/motion/cat/Cat.js +79 -0
- package/dist/cjs/motion/cat/Cat.js.map +1 -0
- package/dist/cjs/motion/cat/animation.js +204 -0
- package/dist/cjs/motion/cat/animation.js.map +1 -0
- package/dist/cjs/motion/cat/art.generated.js +37 -0
- package/dist/cjs/motion/cat/art.generated.js.map +1 -0
- package/dist/cjs/motion/cat/config.js +136 -0
- package/dist/cjs/motion/cat/config.js.map +1 -0
- package/dist/cjs/motion/cat/index.js +75 -0
- package/dist/cjs/motion/cat/index.js.map +1 -0
- package/dist/cjs/motion/cat/rig.js +99 -0
- package/dist/cjs/motion/cat/rig.js.map +1 -0
- package/dist/cjs/motion/cat/scene.js +148 -0
- package/dist/cjs/motion/cat/scene.js.map +1 -0
- package/dist/cjs/motion/configurable/config.js +477 -0
- package/dist/cjs/motion/configurable/config.js.map +1 -0
- package/dist/cjs/motion/configurable/controls.js +44 -0
- package/dist/cjs/motion/configurable/controls.js.map +1 -0
- package/dist/cjs/motion/easing.js +62 -0
- package/dist/cjs/motion/easing.js.map +1 -0
- package/dist/cjs/motion/fit.js +12 -0
- package/dist/cjs/motion/fit.js.map +1 -0
- package/dist/cjs/motion/index.js +101 -0
- package/dist/cjs/motion/index.js.map +1 -0
- package/dist/cjs/motion/neon/GlowRenderer.js +18 -0
- package/dist/cjs/motion/neon/GlowRenderer.js.map +1 -0
- package/dist/cjs/motion/neon/NeonCanvas.js +97 -0
- package/dist/cjs/motion/neon/NeonCanvas.js.map +1 -0
- package/dist/cjs/motion/neon/NeonText.js +108 -0
- package/dist/cjs/motion/neon/NeonText.js.map +1 -0
- package/dist/cjs/motion/neon/NeonTextFrame.js +36 -0
- package/dist/cjs/motion/neon/NeonTextFrame.js.map +1 -0
- package/dist/cjs/motion/neon/artwork.js +102 -0
- package/dist/cjs/motion/neon/artwork.js.map +1 -0
- package/dist/cjs/motion/neon/audio.js +165 -0
- package/dist/cjs/motion/neon/audio.js.map +1 -0
- package/dist/cjs/motion/neon/config.js +334 -0
- package/dist/cjs/motion/neon/config.js.map +1 -0
- package/dist/cjs/motion/neon/flicker.js +196 -0
- package/dist/cjs/motion/neon/flicker.js.map +1 -0
- package/dist/cjs/motion/neon/fonts.js +52 -0
- package/dist/cjs/motion/neon/fonts.js.map +1 -0
- package/dist/cjs/motion/neon/frame.js +24 -0
- package/dist/cjs/motion/neon/frame.js.map +1 -0
- package/dist/cjs/motion/neon/glitch.js +114 -0
- package/dist/cjs/motion/neon/glitch.js.map +1 -0
- package/dist/cjs/motion/neon/index.js +119 -0
- package/dist/cjs/motion/neon/index.js.map +1 -0
- package/dist/cjs/motion/neon/layers.js +68 -0
- package/dist/cjs/motion/neon/layers.js.map +1 -0
- package/dist/cjs/motion/neon/material.js +56 -0
- package/dist/cjs/motion/neon/material.js.map +1 -0
- package/dist/cjs/motion/neon/random.js +43 -0
- package/dist/cjs/motion/neon/random.js.map +1 -0
- package/dist/cjs/motion/neon/scene.js +549 -0
- package/dist/cjs/motion/neon/scene.js.map +1 -0
- package/dist/cjs/motion/neon/synth.js +213 -0
- package/dist/cjs/motion/neon/synth.js.map +1 -0
- package/dist/cjs/motion/neon/typography.js +81 -0
- package/dist/cjs/motion/neon/typography.js.map +1 -0
- package/dist/cjs/motion/neon/wall.js +113 -0
- package/dist/cjs/motion/neon/wall.js.map +1 -0
- package/dist/cjs/motion/paperfold/PaperFold.js +40 -0
- package/dist/cjs/motion/paperfold/PaperFold.js.map +1 -0
- package/dist/cjs/motion/paperfold/PaperFoldFrame.js +290 -0
- package/dist/cjs/motion/paperfold/PaperFoldFrame.js.map +1 -0
- package/dist/cjs/motion/paperfold/PaperFoldPlayer.js +59 -0
- package/dist/cjs/motion/paperfold/PaperFoldPlayer.js.map +1 -0
- package/dist/cjs/motion/paperfold/art.js +388 -0
- package/dist/cjs/motion/paperfold/art.js.map +1 -0
- package/dist/cjs/motion/paperfold/config.js +103 -0
- package/dist/cjs/motion/paperfold/config.js.map +1 -0
- package/dist/cjs/motion/paperfold/controls.js +493 -0
- package/dist/cjs/motion/paperfold/controls.js.map +1 -0
- package/dist/cjs/motion/paperfold/engine.js +722 -0
- package/dist/cjs/motion/paperfold/engine.js.map +1 -0
- package/dist/cjs/motion/paperfold/fonts.js +25 -0
- package/dist/cjs/motion/paperfold/fonts.js.map +1 -0
- package/dist/cjs/motion/paperfold/index.js +113 -0
- package/dist/cjs/motion/paperfold/index.js.map +1 -0
- package/dist/cjs/motion/paperfold/manipulate.js +170 -0
- package/dist/cjs/motion/paperfold/manipulate.js.map +1 -0
- package/dist/cjs/motion/paperfold/presets.js +119 -0
- package/dist/cjs/motion/paperfold/presets.js.map +1 -0
- package/dist/cjs/motion/paperfold/template.js +40 -0
- package/dist/cjs/motion/paperfold/template.js.map +1 -0
- package/dist/cjs/motion/player.js +203 -0
- package/dist/cjs/motion/player.js.map +1 -0
- package/dist/cjs/motion/promo/PromoFrame.js +293 -0
- package/dist/cjs/motion/promo/PromoFrame.js.map +1 -0
- package/dist/cjs/motion/promo/PromoShowcasePlayer.js +59 -0
- package/dist/cjs/motion/promo/PromoShowcasePlayer.js.map +1 -0
- package/dist/cjs/motion/promo/config.js +565 -0
- package/dist/cjs/motion/promo/config.js.map +1 -0
- package/dist/cjs/motion/promo/controls.js +571 -0
- package/dist/cjs/motion/promo/controls.js.map +1 -0
- package/dist/cjs/motion/promo/easing.js +35 -0
- package/dist/cjs/motion/promo/easing.js.map +1 -0
- package/dist/cjs/motion/promo/engine.js +567 -0
- package/dist/cjs/motion/promo/engine.js.map +1 -0
- package/dist/cjs/motion/promo/fonts.js +20 -0
- package/dist/cjs/motion/promo/fonts.js.map +1 -0
- package/dist/cjs/motion/promo/icons.js +29 -0
- package/dist/cjs/motion/promo/icons.js.map +1 -0
- package/dist/cjs/motion/promo/index.js +73 -0
- package/dist/cjs/motion/promo/index.js.map +1 -0
- package/dist/cjs/motion/promo/presets.js +44 -0
- package/dist/cjs/motion/promo/presets.js.map +1 -0
- package/dist/cjs/motion/promo/template.js +38 -0
- package/dist/cjs/motion/promo/template.js.map +1 -0
- package/dist/cjs/motion/replication2/Replication2Player.js +93 -0
- package/dist/cjs/motion/replication2/Replication2Player.js.map +1 -0
- package/dist/cjs/motion/replication2/config.js +352 -0
- package/dist/cjs/motion/replication2/config.js.map +1 -0
- package/dist/cjs/motion/replication2/controls.js +286 -0
- package/dist/cjs/motion/replication2/controls.js.map +1 -0
- package/dist/cjs/motion/replication2/driver.js +68 -0
- package/dist/cjs/motion/replication2/driver.js.map +1 -0
- package/dist/cjs/motion/replication2/easing.js +97 -0
- package/dist/cjs/motion/replication2/easing.js.map +1 -0
- package/dist/cjs/motion/replication2/engine.js +481 -0
- package/dist/cjs/motion/replication2/engine.js.map +1 -0
- package/dist/cjs/motion/replication2/html.js +88 -0
- package/dist/cjs/motion/replication2/html.js.map +1 -0
- package/dist/cjs/motion/replication2/index.js +61 -0
- package/dist/cjs/motion/replication2/index.js.map +1 -0
- package/dist/cjs/motion/replication2/measure.js +30 -0
- package/dist/cjs/motion/replication2/measure.js.map +1 -0
- package/dist/cjs/motion/replication2/metrics.js +10 -0
- package/dist/cjs/motion/replication2/metrics.js.map +1 -0
- package/dist/cjs/motion/replication2/presets.js +67 -0
- package/dist/cjs/motion/replication2/presets.js.map +1 -0
- package/dist/cjs/motion/replication2/riv.js +7 -0
- package/dist/cjs/motion/replication2/riv.js.map +1 -0
- package/dist/cjs/motion/replication2/rive-contract.js +158 -0
- package/dist/cjs/motion/replication2/rive-contract.js.map +1 -0
- package/dist/cjs/motion/replication2/template.js +35 -0
- package/dist/cjs/motion/replication2/template.js.map +1 -0
- package/dist/cjs/motion/sample.js +149 -0
- package/dist/cjs/motion/sample.js.map +1 -0
- package/dist/cjs/motion/templates/hey-template.js +1552 -0
- package/dist/cjs/motion/templates/hey-template.js.map +1 -0
- package/dist/cjs/motion/templates/index.js +22 -0
- package/dist/cjs/motion/templates/index.js.map +1 -0
- package/dist/cjs/motion/templates/word-motion.js +1165 -0
- package/dist/cjs/motion/templates/word-motion.js.map +1 -0
- package/dist/cjs/motion/types.js +3 -0
- package/dist/cjs/motion/types.js.map +1 -0
- package/dist/cjs/motion/typesurface/TypeSurfaceCanvas.js +62 -0
- package/dist/cjs/motion/typesurface/TypeSurfaceCanvas.js.map +1 -0
- package/dist/cjs/motion/typesurface/art.js +861 -0
- package/dist/cjs/motion/typesurface/art.js.map +1 -0
- package/dist/cjs/motion/typesurface/config.js +269 -0
- package/dist/cjs/motion/typesurface/config.js.map +1 -0
- package/dist/cjs/motion/typesurface/engine.js +607 -0
- package/dist/cjs/motion/typesurface/engine.js.map +1 -0
- package/dist/cjs/motion/typesurface/fonts.js +45 -0
- package/dist/cjs/motion/typesurface/fonts.js.map +1 -0
- package/dist/cjs/motion/typesurface/index.js +72 -0
- package/dist/cjs/motion/typesurface/index.js.map +1 -0
- package/dist/cjs/motion/typesurface/layout.js +130 -0
- package/dist/cjs/motion/typesurface/layout.js.map +1 -0
- package/dist/cjs/motion/typesurface/ops.js +175 -0
- package/dist/cjs/motion/typesurface/ops.js.map +1 -0
- package/dist/cjs/motion/typesurface/presets.js +192 -0
- package/dist/cjs/motion/typesurface/presets.js.map +1 -0
- package/dist/cjs/motion/typesurface/renderer.js +672 -0
- package/dist/cjs/motion/typesurface/renderer.js.map +1 -0
- package/dist/cjs/motion/typesurface/shaders.js +300 -0
- package/dist/cjs/motion/typesurface/shaders.js.map +1 -0
- package/dist/cjs/motion/typesurface/surfaces.js +156 -0
- package/dist/cjs/motion/typesurface/surfaces.js.map +1 -0
- package/dist/cjs/motion/typesurface/text.js +34 -0
- package/dist/cjs/motion/typesurface/text.js.map +1 -0
- package/dist/cjs/motion/typesurface/timeline.js +64 -0
- package/dist/cjs/motion/typesurface/timeline.js.map +1 -0
- package/dist/cjs/motion/validate.js +89 -0
- package/dist/cjs/motion/validate.js.map +1 -0
- package/dist/cjs/native/RiveReceiptStage.js +9 -150
- package/dist/cjs/native/RiveReceiptStage.js.map +1 -1
- package/dist/cjs/native/riveReceiptStageFactory.js +162 -0
- package/dist/cjs/native/riveReceiptStageFactory.js.map +1 -0
- package/dist/cjs/tokens/stage.js +10 -0
- package/dist/cjs/tokens/stage.js.map +1 -0
- package/dist/esm/agent/AgentComponent.js +1 -1
- package/dist/esm/agent/AgentComponent.js.map +1 -1
- package/dist/esm/agent/base.d.ts +11 -0
- package/dist/esm/agent/base.d.ts.map +1 -0
- package/dist/esm/agent/base.js +11 -0
- package/dist/esm/agent/base.js.map +1 -0
- package/dist/esm/agent/catalog.d.ts +0 -8
- package/dist/esm/agent/catalog.d.ts.map +1 -1
- package/dist/esm/agent/catalog.js +0 -31
- package/dist/esm/agent/catalog.js.map +1 -1
- package/dist/esm/agent/core.d.ts +6 -7
- package/dist/esm/agent/core.d.ts.map +1 -1
- package/dist/esm/agent/core.js +6 -7
- package/dist/esm/agent/core.js.map +1 -1
- package/dist/esm/agent/index.d.ts +6 -5
- package/dist/esm/agent/index.d.ts.map +1 -1
- package/dist/esm/agent/index.js +6 -5
- package/dist/esm/agent/index.js.map +1 -1
- package/dist/esm/agent/manifests.d.ts.map +1 -1
- package/dist/esm/agent/manifests.js +81 -1
- package/dist/esm/agent/manifests.js.map +1 -1
- package/dist/esm/agent/result.d.ts.map +1 -1
- package/dist/esm/agent/result.js +6 -0
- package/dist/esm/agent/result.js.map +1 -1
- package/dist/esm/agent/search/document.d.ts +6 -0
- package/dist/esm/agent/search/document.d.ts.map +1 -0
- package/dist/esm/agent/search/document.js +46 -0
- package/dist/esm/agent/search/document.js.map +1 -0
- package/dist/esm/agent/search/embedding.d.ts +31 -0
- package/dist/esm/agent/search/embedding.d.ts.map +1 -0
- package/dist/esm/agent/search/embedding.js +103 -0
- package/dist/esm/agent/search/embedding.js.map +1 -0
- package/dist/esm/agent/search/index.d.ts +10 -0
- package/dist/esm/agent/search/index.d.ts.map +1 -0
- package/dist/esm/agent/search/index.js +17 -0
- package/dist/esm/agent/search/index.js.map +1 -0
- package/dist/esm/agent/search/lexical.d.ts +3 -0
- package/dist/esm/agent/search/lexical.d.ts.map +1 -0
- package/dist/esm/agent/search/lexical.js +25 -0
- package/dist/esm/agent/search/lexical.js.map +1 -0
- package/dist/esm/agent/search/normalize.d.ts +13 -0
- package/dist/esm/agent/search/normalize.d.ts.map +1 -0
- package/dist/esm/agent/search/normalize.js +12 -0
- package/dist/esm/agent/search/normalize.js.map +1 -0
- package/dist/esm/agent/search/search.d.ts +42 -0
- package/dist/esm/agent/search/search.d.ts.map +1 -0
- package/dist/esm/agent/search/search.js +119 -0
- package/dist/esm/agent/search/search.js.map +1 -0
- package/dist/esm/agent/search/searchIndex.d.ts +42 -0
- package/dist/esm/agent/search/searchIndex.d.ts.map +1 -0
- package/dist/esm/agent/search/searchIndex.js +114 -0
- package/dist/esm/agent/search/searchIndex.js.map +1 -0
- package/dist/esm/agent/search/types.d.ts +67 -0
- package/dist/esm/agent/search/types.d.ts.map +1 -0
- package/dist/esm/agent/search/types.js +7 -0
- package/dist/esm/agent/search/types.js.map +1 -0
- package/dist/esm/agent/search/weights.d.ts +22 -0
- package/dist/esm/agent/search/weights.d.ts.map +1 -0
- package/dist/esm/agent/search/weights.js +31 -0
- package/dist/esm/agent/search/weights.js.map +1 -0
- package/dist/esm/agent/search/wordvectors.json +1 -0
- package/dist/esm/agent/types.d.ts +1 -1
- package/dist/esm/agent/types.d.ts.map +1 -1
- package/dist/esm/components/catalog.d.ts +1 -1
- package/dist/esm/components/catalog.d.ts.map +1 -1
- package/dist/esm/components/catalog.js +18 -0
- package/dist/esm/components/catalog.js.map +1 -1
- package/dist/esm/components/onboarding/animated-status/AnimatedStage.d.ts +9 -0
- package/dist/esm/components/onboarding/animated-status/AnimatedStage.d.ts.map +1 -0
- package/dist/esm/components/onboarding/animated-status/AnimatedStage.js +18 -0
- package/dist/esm/components/onboarding/animated-status/AnimatedStage.js.map +1 -0
- package/dist/esm/components/onboarding/animated-status/AnimatedStage.types.d.ts +31 -0
- package/dist/esm/components/onboarding/animated-status/AnimatedStage.types.d.ts.map +1 -0
- package/dist/esm/components/onboarding/animated-status/AnimatedStage.types.js +3 -0
- package/dist/esm/components/onboarding/animated-status/AnimatedStage.types.js.map +1 -0
- package/dist/esm/components/onboarding/animated-status/AnimatedStage.web.d.ts +4 -0
- package/dist/esm/components/onboarding/animated-status/AnimatedStage.web.d.ts.map +1 -0
- package/dist/esm/components/onboarding/animated-status/AnimatedStage.web.js +86 -0
- package/dist/esm/components/onboarding/animated-status/AnimatedStage.web.js.map +1 -0
- package/dist/esm/components/onboarding/animated-status/AnimatedStatusView.d.ts +32 -0
- package/dist/esm/components/onboarding/animated-status/AnimatedStatusView.d.ts.map +1 -0
- package/dist/esm/components/onboarding/animated-status/AnimatedStatusView.js +59 -0
- package/dist/esm/components/onboarding/animated-status/AnimatedStatusView.js.map +1 -0
- package/dist/esm/components/onboarding/animated-status/AnimatedStill.d.ts +8 -0
- package/dist/esm/components/onboarding/animated-status/AnimatedStill.d.ts.map +1 -0
- package/dist/esm/components/onboarding/animated-status/AnimatedStill.js +17 -0
- package/dist/esm/components/onboarding/animated-status/AnimatedStill.js.map +1 -0
- package/dist/esm/components/onboarding/animated-status/contract.d.ts +61 -0
- package/dist/esm/components/onboarding/animated-status/contract.d.ts.map +1 -0
- package/dist/esm/components/onboarding/animated-status/contract.js +78 -0
- package/dist/esm/components/onboarding/animated-status/contract.js.map +1 -0
- package/dist/esm/components/onboarding/animated-status/engine.d.ts +24 -0
- package/dist/esm/components/onboarding/animated-status/engine.d.ts.map +1 -0
- package/dist/esm/components/onboarding/animated-status/engine.js +32 -0
- package/dist/esm/components/onboarding/animated-status/engine.js.map +1 -0
- package/dist/esm/components/onboarding/animated-status/index.d.ts +5 -0
- package/dist/esm/components/onboarding/animated-status/index.d.ts.map +1 -0
- package/dist/esm/components/onboarding/animated-status/index.js +4 -0
- package/dist/esm/components/onboarding/animated-status/index.js.map +1 -0
- package/dist/esm/components/onboarding/animated-status/presets.json +126 -0
- package/dist/esm/components/onboarding/animated-status/riv.d.ts +3 -0
- package/dist/esm/components/onboarding/animated-status/riv.d.ts.map +1 -0
- package/dist/esm/components/onboarding/animated-status/riv.js +4 -0
- package/dist/esm/components/onboarding/animated-status/riv.js.map +1 -0
- package/dist/esm/components/onboarding/index.d.ts +2 -0
- package/dist/esm/components/onboarding/index.d.ts.map +1 -1
- package/dist/esm/components/onboarding/index.js +4 -0
- package/dist/esm/components/onboarding/index.js.map +1 -1
- package/dist/esm/components/onboarding/presets.d.ts.map +1 -1
- package/dist/esm/components/onboarding/presets.js +6 -0
- package/dist/esm/components/onboarding/presets.js.map +1 -1
- package/dist/esm/components/onboarding/receipt-printer/ReceiptStage.d.ts +4 -6
- package/dist/esm/components/onboarding/receipt-printer/ReceiptStage.d.ts.map +1 -1
- package/dist/esm/components/onboarding/receipt-printer/ReceiptStage.js +42 -6
- package/dist/esm/components/onboarding/receipt-printer/ReceiptStage.js.map +1 -1
- package/dist/esm/components/onboarding/send-completion/SendCompletionView.d.ts +47 -0
- package/dist/esm/components/onboarding/send-completion/SendCompletionView.d.ts.map +1 -0
- package/dist/esm/components/onboarding/send-completion/SendCompletionView.js +108 -0
- package/dist/esm/components/onboarding/send-completion/SendCompletionView.js.map +1 -0
- package/dist/esm/components/onboarding/send-completion/SendStage.d.ts +9 -0
- package/dist/esm/components/onboarding/send-completion/SendStage.d.ts.map +1 -0
- package/dist/esm/components/onboarding/send-completion/SendStage.js +34 -0
- package/dist/esm/components/onboarding/send-completion/SendStage.js.map +1 -0
- package/dist/esm/components/onboarding/send-completion/SendStage.types.d.ts +33 -0
- package/dist/esm/components/onboarding/send-completion/SendStage.types.d.ts.map +1 -0
- package/dist/esm/components/onboarding/send-completion/SendStage.types.js +3 -0
- package/dist/esm/components/onboarding/send-completion/SendStage.types.js.map +1 -0
- package/dist/esm/components/onboarding/send-completion/SendStage.web.d.ts +4 -0
- package/dist/esm/components/onboarding/send-completion/SendStage.web.d.ts.map +1 -0
- package/dist/esm/components/onboarding/send-completion/SendStage.web.js +104 -0
- package/dist/esm/components/onboarding/send-completion/SendStage.web.js.map +1 -0
- package/dist/esm/components/onboarding/send-completion/SendStill.d.ts +11 -0
- package/dist/esm/components/onboarding/send-completion/SendStill.d.ts.map +1 -0
- package/dist/esm/components/onboarding/send-completion/SendStill.js +14 -0
- package/dist/esm/components/onboarding/send-completion/SendStill.js.map +1 -0
- package/dist/esm/components/onboarding/send-completion/contract.d.ts +99 -0
- package/dist/esm/components/onboarding/send-completion/contract.d.ts.map +1 -0
- package/dist/esm/components/onboarding/send-completion/contract.js +76 -0
- package/dist/esm/components/onboarding/send-completion/contract.js.map +1 -0
- package/dist/esm/components/onboarding/send-completion/engine.d.ts +20 -0
- package/dist/esm/components/onboarding/send-completion/engine.d.ts.map +1 -0
- package/dist/esm/components/onboarding/send-completion/engine.js +28 -0
- package/dist/esm/components/onboarding/send-completion/engine.js.map +1 -0
- package/dist/esm/components/onboarding/send-completion/index.d.ts +6 -0
- package/dist/esm/components/onboarding/send-completion/index.d.ts.map +1 -0
- package/dist/esm/components/onboarding/send-completion/index.js +6 -0
- package/dist/esm/components/onboarding/send-completion/index.js.map +1 -0
- package/dist/esm/components/onboarding/send-completion/presets.json +132 -0
- package/dist/esm/components/onboarding/send-completion/riv.d.ts +3 -0
- package/dist/esm/components/onboarding/send-completion/riv.d.ts.map +1 -0
- package/dist/esm/components/onboarding/send-completion/riv.js +4 -0
- package/dist/esm/components/onboarding/send-completion/riv.js.map +1 -0
- package/dist/esm/components/onboarding/shared/actions-data.d.ts.map +1 -1
- package/dist/esm/components/onboarding/shared/actions-data.js +2 -0
- package/dist/esm/components/onboarding/shared/actions-data.js.map +1 -1
- package/dist/esm/components/onboarding/shared/configColor.d.ts +29 -0
- package/dist/esm/components/onboarding/shared/configColor.d.ts.map +1 -0
- package/dist/esm/components/onboarding/shared/configColor.js +69 -0
- package/dist/esm/components/onboarding/shared/configColor.js.map +1 -0
- package/dist/esm/components/onboarding/shared/contract.d.ts +1 -1
- package/dist/esm/components/onboarding/shared/contract.d.ts.map +1 -1
- package/dist/esm/components/onboarding/shared/contract.js +4 -0
- package/dist/esm/components/onboarding/shared/contract.js.map +1 -1
- package/dist/esm/components/onboarding/shared/describe.d.ts.map +1 -1
- package/dist/esm/components/onboarding/shared/describe.js +1 -1
- package/dist/esm/components/onboarding/shared/describe.js.map +1 -1
- package/dist/esm/components/onboarding/shared/mock.d.ts +2 -0
- package/dist/esm/components/onboarding/shared/mock.d.ts.map +1 -1
- package/dist/esm/components/onboarding/shared/mock.js +2 -0
- package/dist/esm/components/onboarding/shared/mock.js.map +1 -1
- package/dist/esm/components/onboarding/views.d.ts.map +1 -1
- package/dist/esm/components/onboarding/views.js +8 -0
- package/dist/esm/components/onboarding/views.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/motion/MotionPlayer.d.ts +22 -0
- package/dist/esm/motion/MotionPlayer.d.ts.map +1 -0
- package/dist/esm/motion/MotionPlayer.js +39 -0
- package/dist/esm/motion/MotionPlayer.js.map +1 -0
- package/dist/esm/motion/agent.d.ts +146 -0
- package/dist/esm/motion/agent.d.ts.map +1 -0
- package/dist/esm/motion/agent.js +278 -0
- package/dist/esm/motion/agent.js.map +1 -0
- package/dist/esm/motion/cat/Cat.d.ts +43 -0
- package/dist/esm/motion/cat/Cat.d.ts.map +1 -0
- package/dist/esm/motion/cat/Cat.js +74 -0
- package/dist/esm/motion/cat/Cat.js.map +1 -0
- package/dist/esm/motion/cat/animation.d.ts +86 -0
- package/dist/esm/motion/cat/animation.d.ts.map +1 -0
- package/dist/esm/motion/cat/animation.js +193 -0
- package/dist/esm/motion/cat/animation.js.map +1 -0
- package/dist/esm/motion/cat/art.generated.d.ts +53 -0
- package/dist/esm/motion/cat/art.generated.d.ts.map +1 -0
- package/dist/esm/motion/cat/art.generated.js +34 -0
- package/dist/esm/motion/cat/art.generated.js.map +1 -0
- package/dist/esm/motion/cat/config.d.ts +103 -0
- package/dist/esm/motion/cat/config.d.ts.map +1 -0
- package/dist/esm/motion/cat/config.js +129 -0
- package/dist/esm/motion/cat/config.js.map +1 -0
- package/dist/esm/motion/cat/index.d.ts +13 -0
- package/dist/esm/motion/cat/index.d.ts.map +1 -0
- package/dist/esm/motion/cat/index.js +13 -0
- package/dist/esm/motion/cat/index.js.map +1 -0
- package/dist/esm/motion/cat/rig.d.ts +44 -0
- package/dist/esm/motion/cat/rig.d.ts.map +1 -0
- package/dist/esm/motion/cat/rig.js +86 -0
- package/dist/esm/motion/cat/rig.js.map +1 -0
- package/dist/esm/motion/cat/scene.d.ts +66 -0
- package/dist/esm/motion/cat/scene.d.ts.map +1 -0
- package/dist/esm/motion/cat/scene.js +137 -0
- package/dist/esm/motion/cat/scene.js.map +1 -0
- package/dist/esm/motion/configurable/config.d.ts +80 -0
- package/dist/esm/motion/configurable/config.d.ts.map +1 -0
- package/dist/esm/motion/configurable/config.js +468 -0
- package/dist/esm/motion/configurable/config.js.map +1 -0
- package/dist/esm/motion/configurable/controls.d.ts +74 -0
- package/dist/esm/motion/configurable/controls.d.ts.map +1 -0
- package/dist/esm/motion/configurable/controls.js +38 -0
- package/dist/esm/motion/configurable/controls.js.map +1 -0
- package/dist/esm/motion/easing.d.ts +4 -0
- package/dist/esm/motion/easing.d.ts.map +1 -0
- package/dist/esm/motion/easing.js +58 -0
- package/dist/esm/motion/easing.js.map +1 -0
- package/dist/esm/motion/fit.d.ts +8 -0
- package/dist/esm/motion/fit.d.ts.map +1 -0
- package/dist/esm/motion/fit.js +8 -0
- package/dist/esm/motion/fit.js.map +1 -0
- package/dist/esm/motion/index.d.ts +27 -0
- package/dist/esm/motion/index.d.ts.map +1 -0
- package/dist/esm/motion/index.js +21 -0
- package/dist/esm/motion/index.js.map +1 -0
- package/dist/esm/motion/neon/GlowRenderer.d.ts +31 -0
- package/dist/esm/motion/neon/GlowRenderer.d.ts.map +1 -0
- package/dist/esm/motion/neon/GlowRenderer.js +14 -0
- package/dist/esm/motion/neon/GlowRenderer.js.map +1 -0
- package/dist/esm/motion/neon/NeonCanvas.d.ts +42 -0
- package/dist/esm/motion/neon/NeonCanvas.d.ts.map +1 -0
- package/dist/esm/motion/neon/NeonCanvas.js +92 -0
- package/dist/esm/motion/neon/NeonCanvas.js.map +1 -0
- package/dist/esm/motion/neon/NeonText.d.ts +26 -0
- package/dist/esm/motion/neon/NeonText.d.ts.map +1 -0
- package/dist/esm/motion/neon/NeonText.js +103 -0
- package/dist/esm/motion/neon/NeonText.js.map +1 -0
- package/dist/esm/motion/neon/NeonTextFrame.d.ts +29 -0
- package/dist/esm/motion/neon/NeonTextFrame.d.ts.map +1 -0
- package/dist/esm/motion/neon/NeonTextFrame.js +33 -0
- package/dist/esm/motion/neon/NeonTextFrame.js.map +1 -0
- package/dist/esm/motion/neon/artwork.d.ts +29 -0
- package/dist/esm/motion/neon/artwork.d.ts.map +1 -0
- package/dist/esm/motion/neon/artwork.js +98 -0
- package/dist/esm/motion/neon/artwork.js.map +1 -0
- package/dist/esm/motion/neon/audio.d.ts +49 -0
- package/dist/esm/motion/neon/audio.d.ts.map +1 -0
- package/dist/esm/motion/neon/audio.js +161 -0
- package/dist/esm/motion/neon/audio.js.map +1 -0
- package/dist/esm/motion/neon/config.d.ts +319 -0
- package/dist/esm/motion/neon/config.d.ts.map +1 -0
- package/dist/esm/motion/neon/config.js +319 -0
- package/dist/esm/motion/neon/config.js.map +1 -0
- package/dist/esm/motion/neon/flicker.d.ts +82 -0
- package/dist/esm/motion/neon/flicker.d.ts.map +1 -0
- package/dist/esm/motion/neon/flicker.js +187 -0
- package/dist/esm/motion/neon/flicker.js.map +1 -0
- package/dist/esm/motion/neon/fonts.d.ts +29 -0
- package/dist/esm/motion/neon/fonts.d.ts.map +1 -0
- package/dist/esm/motion/neon/fonts.js +47 -0
- package/dist/esm/motion/neon/fonts.js.map +1 -0
- package/dist/esm/motion/neon/frame.d.ts +22 -0
- package/dist/esm/motion/neon/frame.d.ts.map +1 -0
- package/dist/esm/motion/neon/frame.js +20 -0
- package/dist/esm/motion/neon/frame.js.map +1 -0
- package/dist/esm/motion/neon/glitch.d.ts +64 -0
- package/dist/esm/motion/neon/glitch.d.ts.map +1 -0
- package/dist/esm/motion/neon/glitch.js +108 -0
- package/dist/esm/motion/neon/glitch.js.map +1 -0
- package/dist/esm/motion/neon/index.d.ts +29 -0
- package/dist/esm/motion/neon/index.d.ts.map +1 -0
- package/dist/esm/motion/neon/index.js +28 -0
- package/dist/esm/motion/neon/index.js.map +1 -0
- package/dist/esm/motion/neon/layers.d.ts +56 -0
- package/dist/esm/motion/neon/layers.d.ts.map +1 -0
- package/dist/esm/motion/neon/layers.js +64 -0
- package/dist/esm/motion/neon/layers.js.map +1 -0
- package/dist/esm/motion/neon/material.d.ts +68 -0
- package/dist/esm/motion/neon/material.d.ts.map +1 -0
- package/dist/esm/motion/neon/material.js +51 -0
- package/dist/esm/motion/neon/material.js.map +1 -0
- package/dist/esm/motion/neon/random.d.ts +15 -0
- package/dist/esm/motion/neon/random.d.ts.map +1 -0
- package/dist/esm/motion/neon/random.js +37 -0
- package/dist/esm/motion/neon/random.js.map +1 -0
- package/dist/esm/motion/neon/scene.d.ts +255 -0
- package/dist/esm/motion/neon/scene.d.ts.map +1 -0
- package/dist/esm/motion/neon/scene.js +532 -0
- package/dist/esm/motion/neon/scene.js.map +1 -0
- package/dist/esm/motion/neon/synth.d.ts +18 -0
- package/dist/esm/motion/neon/synth.d.ts.map +1 -0
- package/dist/esm/motion/neon/synth.js +208 -0
- package/dist/esm/motion/neon/synth.js.map +1 -0
- package/dist/esm/motion/neon/typography.d.ts +53 -0
- package/dist/esm/motion/neon/typography.d.ts.map +1 -0
- package/dist/esm/motion/neon/typography.js +74 -0
- package/dist/esm/motion/neon/typography.js.map +1 -0
- package/dist/esm/motion/neon/wall.d.ts +62 -0
- package/dist/esm/motion/neon/wall.d.ts.map +1 -0
- package/dist/esm/motion/neon/wall.js +106 -0
- package/dist/esm/motion/neon/wall.js.map +1 -0
- package/dist/esm/motion/paperfold/PaperFold.d.ts +36 -0
- package/dist/esm/motion/paperfold/PaperFold.d.ts.map +1 -0
- package/dist/esm/motion/paperfold/PaperFold.js +37 -0
- package/dist/esm/motion/paperfold/PaperFold.js.map +1 -0
- package/dist/esm/motion/paperfold/PaperFoldFrame.d.ts +39 -0
- package/dist/esm/motion/paperfold/PaperFoldFrame.d.ts.map +1 -0
- package/dist/esm/motion/paperfold/PaperFoldFrame.js +283 -0
- package/dist/esm/motion/paperfold/PaperFoldFrame.js.map +1 -0
- package/dist/esm/motion/paperfold/PaperFoldPlayer.d.ts +27 -0
- package/dist/esm/motion/paperfold/PaperFoldPlayer.d.ts.map +1 -0
- package/dist/esm/motion/paperfold/PaperFoldPlayer.js +56 -0
- package/dist/esm/motion/paperfold/PaperFoldPlayer.js.map +1 -0
- package/dist/esm/motion/paperfold/art.d.ts +148 -0
- package/dist/esm/motion/paperfold/art.d.ts.map +1 -0
- package/dist/esm/motion/paperfold/art.js +374 -0
- package/dist/esm/motion/paperfold/art.js.map +1 -0
- package/dist/esm/motion/paperfold/config.d.ts +47 -0
- package/dist/esm/motion/paperfold/config.d.ts.map +1 -0
- package/dist/esm/motion/paperfold/config.js +96 -0
- package/dist/esm/motion/paperfold/config.js.map +1 -0
- package/dist/esm/motion/paperfold/controls.d.ts +57 -0
- package/dist/esm/motion/paperfold/controls.d.ts.map +1 -0
- package/dist/esm/motion/paperfold/controls.js +506 -0
- package/dist/esm/motion/paperfold/controls.js.map +1 -0
- package/dist/esm/motion/paperfold/engine.d.ts +397 -0
- package/dist/esm/motion/paperfold/engine.d.ts.map +1 -0
- package/dist/esm/motion/paperfold/engine.js +699 -0
- package/dist/esm/motion/paperfold/engine.js.map +1 -0
- package/dist/esm/motion/paperfold/fonts.d.ts +3 -0
- package/dist/esm/motion/paperfold/fonts.d.ts.map +1 -0
- package/dist/esm/motion/paperfold/fonts.js +21 -0
- package/dist/esm/motion/paperfold/fonts.js.map +1 -0
- package/dist/esm/motion/paperfold/index.d.ts +17 -0
- package/dist/esm/motion/paperfold/index.d.ts.map +1 -0
- package/dist/esm/motion/paperfold/index.js +17 -0
- package/dist/esm/motion/paperfold/index.js.map +1 -0
- package/dist/esm/motion/paperfold/manipulate.d.ts +59 -0
- package/dist/esm/motion/paperfold/manipulate.d.ts.map +1 -0
- package/dist/esm/motion/paperfold/manipulate.js +161 -0
- package/dist/esm/motion/paperfold/manipulate.js.map +1 -0
- package/dist/esm/motion/paperfold/presets.d.ts +9 -0
- package/dist/esm/motion/paperfold/presets.d.ts.map +1 -0
- package/dist/esm/motion/paperfold/presets.js +115 -0
- package/dist/esm/motion/paperfold/presets.js.map +1 -0
- package/dist/esm/motion/paperfold/template.d.ts +3 -0
- package/dist/esm/motion/paperfold/template.d.ts.map +1 -0
- package/dist/esm/motion/paperfold/template.js +37 -0
- package/dist/esm/motion/paperfold/template.js.map +1 -0
- package/dist/esm/motion/player.d.ts +35 -0
- package/dist/esm/motion/player.d.ts.map +1 -0
- package/dist/esm/motion/player.js +197 -0
- package/dist/esm/motion/player.js.map +1 -0
- package/dist/esm/motion/promo/PromoFrame.d.ts +31 -0
- package/dist/esm/motion/promo/PromoFrame.d.ts.map +1 -0
- package/dist/esm/motion/promo/PromoFrame.js +288 -0
- package/dist/esm/motion/promo/PromoFrame.js.map +1 -0
- package/dist/esm/motion/promo/PromoShowcasePlayer.d.ts +25 -0
- package/dist/esm/motion/promo/PromoShowcasePlayer.d.ts.map +1 -0
- package/dist/esm/motion/promo/PromoShowcasePlayer.js +56 -0
- package/dist/esm/motion/promo/PromoShowcasePlayer.js.map +1 -0
- package/dist/esm/motion/promo/config.d.ts +91 -0
- package/dist/esm/motion/promo/config.d.ts.map +1 -0
- package/dist/esm/motion/promo/config.js +550 -0
- package/dist/esm/motion/promo/config.js.map +1 -0
- package/dist/esm/motion/promo/controls.d.ts +86 -0
- package/dist/esm/motion/promo/controls.d.ts.map +1 -0
- package/dist/esm/motion/promo/controls.js +567 -0
- package/dist/esm/motion/promo/controls.js.map +1 -0
- package/dist/esm/motion/promo/easing.d.ts +3 -0
- package/dist/esm/motion/promo/easing.d.ts.map +1 -0
- package/dist/esm/motion/promo/easing.js +32 -0
- package/dist/esm/motion/promo/easing.js.map +1 -0
- package/dist/esm/motion/promo/engine.d.ts +205 -0
- package/dist/esm/motion/promo/engine.d.ts.map +1 -0
- package/dist/esm/motion/promo/engine.js +551 -0
- package/dist/esm/motion/promo/engine.js.map +1 -0
- package/dist/esm/motion/promo/fonts.d.ts +7 -0
- package/dist/esm/motion/promo/fonts.d.ts.map +1 -0
- package/dist/esm/motion/promo/fonts.js +16 -0
- package/dist/esm/motion/promo/fonts.js.map +1 -0
- package/dist/esm/motion/promo/icons.d.ts +7 -0
- package/dist/esm/motion/promo/icons.d.ts.map +1 -0
- package/dist/esm/motion/promo/icons.js +26 -0
- package/dist/esm/motion/promo/icons.js.map +1 -0
- package/dist/esm/motion/promo/index.d.ts +15 -0
- package/dist/esm/motion/promo/index.d.ts.map +1 -0
- package/dist/esm/motion/promo/index.js +15 -0
- package/dist/esm/motion/promo/index.js.map +1 -0
- package/dist/esm/motion/promo/presets.d.ts +13 -0
- package/dist/esm/motion/promo/presets.d.ts.map +1 -0
- package/dist/esm/motion/promo/presets.js +40 -0
- package/dist/esm/motion/promo/presets.js.map +1 -0
- package/dist/esm/motion/promo/template.d.ts +8 -0
- package/dist/esm/motion/promo/template.d.ts.map +1 -0
- package/dist/esm/motion/promo/template.js +35 -0
- package/dist/esm/motion/promo/template.js.map +1 -0
- package/dist/esm/motion/replication2/Replication2Player.d.ts +26 -0
- package/dist/esm/motion/replication2/Replication2Player.d.ts.map +1 -0
- package/dist/esm/motion/replication2/Replication2Player.js +90 -0
- package/dist/esm/motion/replication2/Replication2Player.js.map +1 -0
- package/dist/esm/motion/replication2/config.d.ts +78 -0
- package/dist/esm/motion/replication2/config.d.ts.map +1 -0
- package/dist/esm/motion/replication2/config.js +341 -0
- package/dist/esm/motion/replication2/config.js.map +1 -0
- package/dist/esm/motion/replication2/controls.d.ts +70 -0
- package/dist/esm/motion/replication2/controls.d.ts.map +1 -0
- package/dist/esm/motion/replication2/controls.js +283 -0
- package/dist/esm/motion/replication2/controls.js.map +1 -0
- package/dist/esm/motion/replication2/driver.d.ts +23 -0
- package/dist/esm/motion/replication2/driver.d.ts.map +1 -0
- package/dist/esm/motion/replication2/driver.js +65 -0
- package/dist/esm/motion/replication2/driver.js.map +1 -0
- package/dist/esm/motion/replication2/easing.d.ts +19 -0
- package/dist/esm/motion/replication2/easing.d.ts.map +1 -0
- package/dist/esm/motion/replication2/easing.js +92 -0
- package/dist/esm/motion/replication2/easing.js.map +1 -0
- package/dist/esm/motion/replication2/engine.d.ts +236 -0
- package/dist/esm/motion/replication2/engine.d.ts.map +1 -0
- package/dist/esm/motion/replication2/engine.js +470 -0
- package/dist/esm/motion/replication2/engine.js.map +1 -0
- package/dist/esm/motion/replication2/html.d.ts +30 -0
- package/dist/esm/motion/replication2/html.d.ts.map +1 -0
- package/dist/esm/motion/replication2/html.js +83 -0
- package/dist/esm/motion/replication2/html.js.map +1 -0
- package/dist/esm/motion/replication2/index.d.ts +15 -0
- package/dist/esm/motion/replication2/index.d.ts.map +1 -0
- package/dist/esm/motion/replication2/index.js +15 -0
- package/dist/esm/motion/replication2/index.js.map +1 -0
- package/dist/esm/motion/replication2/measure.d.ts +3 -0
- package/dist/esm/motion/replication2/measure.d.ts.map +1 -0
- package/dist/esm/motion/replication2/measure.js +27 -0
- package/dist/esm/motion/replication2/measure.js.map +1 -0
- package/dist/esm/motion/replication2/metrics.d.ts +6 -0
- package/dist/esm/motion/replication2/metrics.d.ts.map +1 -0
- package/dist/esm/motion/replication2/metrics.js +7 -0
- package/dist/esm/motion/replication2/metrics.js.map +1 -0
- package/dist/esm/motion/replication2/presets.d.ts +13 -0
- package/dist/esm/motion/replication2/presets.d.ts.map +1 -0
- package/dist/esm/motion/replication2/presets.js +63 -0
- package/dist/esm/motion/replication2/presets.js.map +1 -0
- package/dist/esm/motion/replication2/riv.d.ts +3 -0
- package/dist/esm/motion/replication2/riv.d.ts.map +1 -0
- package/dist/esm/motion/replication2/riv.js +4 -0
- package/dist/esm/motion/replication2/riv.js.map +1 -0
- package/dist/esm/motion/replication2/rive-contract.d.ts +27 -0
- package/dist/esm/motion/replication2/rive-contract.d.ts.map +1 -0
- package/dist/esm/motion/replication2/rive-contract.js +153 -0
- package/dist/esm/motion/replication2/rive-contract.js.map +1 -0
- package/dist/esm/motion/replication2/template.d.ts +8 -0
- package/dist/esm/motion/replication2/template.d.ts.map +1 -0
- package/dist/esm/motion/replication2/template.js +32 -0
- package/dist/esm/motion/replication2/template.js.map +1 -0
- package/dist/esm/motion/sample.d.ts +61 -0
- package/dist/esm/motion/sample.d.ts.map +1 -0
- package/dist/esm/motion/sample.js +138 -0
- package/dist/esm/motion/sample.js.map +1 -0
- package/dist/esm/motion/templates/hey-template.d.ts +3 -0
- package/dist/esm/motion/templates/hey-template.d.ts.map +1 -0
- package/dist/esm/motion/templates/hey-template.js +1549 -0
- package/dist/esm/motion/templates/hey-template.js.map +1 -0
- package/dist/esm/motion/templates/index.d.ts +22 -0
- package/dist/esm/motion/templates/index.d.ts.map +1 -0
- package/dist/esm/motion/templates/index.js +15 -0
- package/dist/esm/motion/templates/index.js.map +1 -0
- package/dist/esm/motion/templates/word-motion.d.ts +3 -0
- package/dist/esm/motion/templates/word-motion.d.ts.map +1 -0
- package/dist/esm/motion/templates/word-motion.js +1162 -0
- package/dist/esm/motion/templates/word-motion.js.map +1 -0
- package/dist/esm/motion/types.d.ts +192 -0
- package/dist/esm/motion/types.d.ts.map +1 -0
- package/dist/esm/motion/types.js +2 -0
- package/dist/esm/motion/types.js.map +1 -0
- package/dist/esm/motion/typesurface/TypeSurfaceCanvas.d.ts +22 -0
- package/dist/esm/motion/typesurface/TypeSurfaceCanvas.d.ts.map +1 -0
- package/dist/esm/motion/typesurface/TypeSurfaceCanvas.js +58 -0
- package/dist/esm/motion/typesurface/TypeSurfaceCanvas.js.map +1 -0
- package/dist/esm/motion/typesurface/art.d.ts +21 -0
- package/dist/esm/motion/typesurface/art.d.ts.map +1 -0
- package/dist/esm/motion/typesurface/art.js +854 -0
- package/dist/esm/motion/typesurface/art.js.map +1 -0
- package/dist/esm/motion/typesurface/config.d.ts +273 -0
- package/dist/esm/motion/typesurface/config.d.ts.map +1 -0
- package/dist/esm/motion/typesurface/config.js +260 -0
- package/dist/esm/motion/typesurface/config.js.map +1 -0
- package/dist/esm/motion/typesurface/engine.d.ts +94 -0
- package/dist/esm/motion/typesurface/engine.d.ts.map +1 -0
- package/dist/esm/motion/typesurface/engine.js +603 -0
- package/dist/esm/motion/typesurface/engine.js.map +1 -0
- package/dist/esm/motion/typesurface/fonts.d.ts +25 -0
- package/dist/esm/motion/typesurface/fonts.d.ts.map +1 -0
- package/dist/esm/motion/typesurface/fonts.js +40 -0
- package/dist/esm/motion/typesurface/fonts.js.map +1 -0
- package/dist/esm/motion/typesurface/index.d.ts +17 -0
- package/dist/esm/motion/typesurface/index.d.ts.map +1 -0
- package/dist/esm/motion/typesurface/index.js +17 -0
- package/dist/esm/motion/typesurface/index.js.map +1 -0
- package/dist/esm/motion/typesurface/layout.d.ts +57 -0
- package/dist/esm/motion/typesurface/layout.d.ts.map +1 -0
- package/dist/esm/motion/typesurface/layout.js +122 -0
- package/dist/esm/motion/typesurface/layout.js.map +1 -0
- package/dist/esm/motion/typesurface/ops.d.ts +70 -0
- package/dist/esm/motion/typesurface/ops.d.ts.map +1 -0
- package/dist/esm/motion/typesurface/ops.js +164 -0
- package/dist/esm/motion/typesurface/ops.js.map +1 -0
- package/dist/esm/motion/typesurface/presets.d.ts +33 -0
- package/dist/esm/motion/typesurface/presets.d.ts.map +1 -0
- package/dist/esm/motion/typesurface/presets.js +185 -0
- package/dist/esm/motion/typesurface/presets.js.map +1 -0
- package/dist/esm/motion/typesurface/renderer.d.ts +78 -0
- package/dist/esm/motion/typesurface/renderer.d.ts.map +1 -0
- package/dist/esm/motion/typesurface/renderer.js +666 -0
- package/dist/esm/motion/typesurface/renderer.js.map +1 -0
- package/dist/esm/motion/typesurface/shaders.d.ts +17 -0
- package/dist/esm/motion/typesurface/shaders.d.ts.map +1 -0
- package/dist/esm/motion/typesurface/shaders.js +297 -0
- package/dist/esm/motion/typesurface/shaders.js.map +1 -0
- package/dist/esm/motion/typesurface/surfaces.d.ts +81 -0
- package/dist/esm/motion/typesurface/surfaces.d.ts.map +1 -0
- package/dist/esm/motion/typesurface/surfaces.js +149 -0
- package/dist/esm/motion/typesurface/surfaces.js.map +1 -0
- package/dist/esm/motion/typesurface/text.d.ts +17 -0
- package/dist/esm/motion/typesurface/text.d.ts.map +1 -0
- package/dist/esm/motion/typesurface/text.js +28 -0
- package/dist/esm/motion/typesurface/text.js.map +1 -0
- package/dist/esm/motion/typesurface/timeline.d.ts +15 -0
- package/dist/esm/motion/typesurface/timeline.d.ts.map +1 -0
- package/dist/esm/motion/typesurface/timeline.js +57 -0
- package/dist/esm/motion/typesurface/timeline.js.map +1 -0
- package/dist/esm/motion/validate.d.ts +22 -0
- package/dist/esm/motion/validate.d.ts.map +1 -0
- package/dist/esm/motion/validate.js +84 -0
- package/dist/esm/motion/validate.js.map +1 -0
- package/dist/esm/native/RiveReceiptStage.d.ts +25 -2
- package/dist/esm/native/RiveReceiptStage.d.ts.map +1 -1
- package/dist/esm/native/RiveReceiptStage.js +7 -148
- package/dist/esm/native/RiveReceiptStage.js.map +1 -1
- package/dist/esm/native/riveReceiptStageFactory.d.ts +26 -0
- package/dist/esm/native/riveReceiptStageFactory.d.ts.map +1 -0
- package/dist/esm/native/riveReceiptStageFactory.js +159 -0
- package/dist/esm/native/riveReceiptStageFactory.js.map +1 -0
- package/dist/esm/tokens/stage.d.ts +7 -0
- package/dist/esm/tokens/stage.d.ts.map +1 -0
- package/dist/esm/tokens/stage.js +7 -0
- package/dist/esm/tokens/stage.js.map +1 -0
- package/package.json +36 -1
- package/spec/examples/components/onboarding/animated-status/case1.json +42 -0
- package/spec/examples/components/onboarding/animated-status/case2.json +42 -0
- package/spec/examples/components/onboarding/animated-status/case3.json +42 -0
- package/spec/examples/components/onboarding/animated-status/case4.json +42 -0
- package/spec/examples/components/onboarding/animated-status/case5.json +42 -0
- package/spec/examples/components/onboarding/send-completion/case1.json +48 -0
- package/spec/examples/components/onboarding/send-completion/case2.json +48 -0
- package/spec/examples/components/onboarding/send-completion/case3.json +48 -0
- package/spec/examples/components/onboarding/send-completion/case4.json +48 -0
- package/spec/examples/components/onboarding/send-completion/case5.json +48 -0
- package/spec/families/onboarding.schema.json +610 -1
- package/src/agent/AgentComponent.tsx +1 -1
- package/src/agent/base.ts +17 -0
- package/src/agent/catalog.ts +0 -32
- package/src/agent/core.ts +6 -14
- package/src/agent/index.ts +6 -5
- package/src/agent/manifests.ts +83 -1
- package/src/agent/result.ts +6 -0
- package/src/agent/search/document.ts +46 -0
- package/src/agent/search/embedding.ts +95 -0
- package/src/agent/search/index.ts +20 -0
- package/src/agent/search/lexical.ts +25 -0
- package/src/agent/search/normalize.ts +17 -0
- package/src/agent/search/search.ts +148 -0
- package/src/agent/search/searchIndex.ts +107 -0
- package/src/agent/search/types.ts +68 -0
- package/src/agent/search/weights.ts +32 -0
- package/src/agent/types.ts +1 -1
- package/src/components/catalog.ts +21 -1
- package/src/components/onboarding/animated-status/AnimatedStage.tsx +18 -0
- package/src/components/onboarding/animated-status/AnimatedStage.types.ts +30 -0
- package/src/components/onboarding/animated-status/AnimatedStage.web.tsx +99 -0
- package/src/components/onboarding/animated-status/AnimatedStatusView.tsx +109 -0
- package/src/components/onboarding/animated-status/AnimatedStill.tsx +23 -0
- package/src/components/onboarding/animated-status/contract.ts +105 -0
- package/src/components/onboarding/animated-status/engine.ts +49 -0
- package/src/components/onboarding/animated-status/index.ts +8 -0
- package/src/components/onboarding/animated-status/presets.json +126 -0
- package/src/components/onboarding/animated-status/riv.ts +4 -0
- package/src/components/onboarding/index.ts +4 -0
- package/src/components/onboarding/presets.ts +6 -0
- package/src/components/onboarding/receipt-printer/ReceiptStage.tsx +46 -7
- package/src/components/onboarding/send-completion/SendCompletionView.tsx +164 -0
- package/src/components/onboarding/send-completion/SendStage.tsx +27 -0
- package/src/components/onboarding/send-completion/SendStage.types.ts +32 -0
- package/src/components/onboarding/send-completion/SendStage.web.tsx +116 -0
- package/src/components/onboarding/send-completion/SendStill.tsx +19 -0
- package/src/components/onboarding/send-completion/contract.ts +127 -0
- package/src/components/onboarding/send-completion/engine.ts +37 -0
- package/src/components/onboarding/send-completion/index.ts +10 -0
- package/src/components/onboarding/send-completion/presets.json +132 -0
- package/src/components/onboarding/send-completion/riv.ts +4 -0
- package/src/components/onboarding/shared/actions-data.ts +2 -0
- package/src/components/onboarding/shared/configColor.ts +72 -0
- package/src/components/onboarding/shared/contract.ts +4 -0
- package/src/components/onboarding/shared/describe.ts +1 -1
- package/src/components/onboarding/shared/mock.ts +2 -0
- package/src/components/onboarding/views.ts +8 -0
- package/src/index.ts +1 -1
- package/src/motion/MotionPlayer.tsx +62 -0
- package/src/motion/agent.ts +288 -0
- package/src/motion/cat/Cat.tsx +118 -0
- package/src/motion/cat/animation.ts +206 -0
- package/src/motion/cat/art.generated.ts +44 -0
- package/src/motion/cat/config.ts +186 -0
- package/src/motion/cat/index.ts +26 -0
- package/src/motion/cat/rig.ts +102 -0
- package/src/motion/cat/scene.ts +181 -0
- package/src/motion/configurable/config.ts +420 -0
- package/src/motion/configurable/controls.ts +93 -0
- package/src/motion/easing.ts +55 -0
- package/src/motion/fit.ts +8 -0
- package/src/motion/index.ts +29 -0
- package/src/motion/neon/GlowRenderer.tsx +83 -0
- package/src/motion/neon/NeonCanvas.tsx +175 -0
- package/src/motion/neon/NeonText.tsx +113 -0
- package/src/motion/neon/NeonTextFrame.tsx +67 -0
- package/src/motion/neon/artwork.ts +95 -0
- package/src/motion/neon/audio.ts +162 -0
- package/src/motion/neon/config.ts +484 -0
- package/src/motion/neon/flicker.ts +225 -0
- package/src/motion/neon/fonts.ts +76 -0
- package/src/motion/neon/frame.ts +34 -0
- package/src/motion/neon/glitch.ts +142 -0
- package/src/motion/neon/index.ts +41 -0
- package/src/motion/neon/layers.tsx +209 -0
- package/src/motion/neon/material.ts +88 -0
- package/src/motion/neon/random.ts +40 -0
- package/src/motion/neon/scene.ts +610 -0
- package/src/motion/neon/synth.ts +188 -0
- package/src/motion/neon/typography.ts +102 -0
- package/src/motion/neon/wall.ts +157 -0
- package/src/motion/paperfold/PaperFold.tsx +45 -0
- package/src/motion/paperfold/PaperFoldFrame.tsx +576 -0
- package/src/motion/paperfold/PaperFoldPlayer.tsx +80 -0
- package/src/motion/paperfold/art.ts +455 -0
- package/src/motion/paperfold/config.ts +98 -0
- package/src/motion/paperfold/controls.ts +557 -0
- package/src/motion/paperfold/engine.ts +852 -0
- package/src/motion/paperfold/fonts.ts +21 -0
- package/src/motion/paperfold/index.ts +30 -0
- package/src/motion/paperfold/manipulate.ts +188 -0
- package/src/motion/paperfold/presets.ts +117 -0
- package/src/motion/paperfold/template.ts +38 -0
- package/src/motion/player.ts +207 -0
- package/src/motion/promo/PromoFrame.tsx +501 -0
- package/src/motion/promo/PromoShowcasePlayer.tsx +78 -0
- package/src/motion/promo/config.ts +479 -0
- package/src/motion/promo/controls.ts +643 -0
- package/src/motion/promo/easing.ts +36 -0
- package/src/motion/promo/engine.ts +587 -0
- package/src/motion/promo/fonts.ts +16 -0
- package/src/motion/promo/icons.tsx +29 -0
- package/src/motion/promo/index.ts +24 -0
- package/src/motion/promo/presets.ts +40 -0
- package/src/motion/promo/template.ts +36 -0
- package/src/motion/replication2/Replication2Player.tsx +115 -0
- package/src/motion/replication2/config.ts +323 -0
- package/src/motion/replication2/controls.ts +336 -0
- package/src/motion/replication2/driver.ts +92 -0
- package/src/motion/replication2/easing.ts +88 -0
- package/src/motion/replication2/engine.ts +539 -0
- package/src/motion/replication2/html.ts +87 -0
- package/src/motion/replication2/index.ts +14 -0
- package/src/motion/replication2/measure.ts +28 -0
- package/src/motion/replication2/metrics.ts +7 -0
- package/src/motion/replication2/presets.ts +63 -0
- package/src/motion/replication2/riv.ts +4 -0
- package/src/motion/replication2/rive-contract.ts +165 -0
- package/src/motion/replication2/template.ts +33 -0
- package/src/motion/sample.ts +173 -0
- package/src/motion/templates/hey-template.ts +1553 -0
- package/src/motion/templates/index.ts +17 -0
- package/src/motion/templates/word-motion.ts +1166 -0
- package/src/motion/types.ts +162 -0
- package/src/motion/typesurface/TypeSurfaceCanvas.tsx +73 -0
- package/src/motion/typesurface/art.ts +639 -0
- package/src/motion/typesurface/config.ts +486 -0
- package/src/motion/typesurface/engine.ts +586 -0
- package/src/motion/typesurface/fonts.ts +63 -0
- package/src/motion/typesurface/index.ts +16 -0
- package/src/motion/typesurface/layout.ts +133 -0
- package/src/motion/typesurface/ops.ts +196 -0
- package/src/motion/typesurface/presets.ts +199 -0
- package/src/motion/typesurface/renderer.ts +579 -0
- package/src/motion/typesurface/shaders.ts +303 -0
- package/src/motion/typesurface/surfaces.ts +223 -0
- package/src/motion/typesurface/text.ts +35 -0
- package/src/motion/typesurface/timeline.ts +58 -0
- package/src/motion/validate.ts +101 -0
- package/src/native/RiveReceiptStage.tsx +8 -155
- package/src/native/riveReceiptStageFactory.tsx +175 -0
- package/src/tokens/stage.ts +6 -0
- package/tools/ask/dist/components.mjs +7221 -44
- package/tools/ask/mcp.mjs +80 -1
|
@@ -0,0 +1,576 @@
|
|
|
1
|
+
/* eslint-disable comppack/no-raw-colour -- a video frame, not site UI: every colour is config content; the few literals are fixed tints (white light, black shade) of the lighting model and the debug overlay's own colours (DECISIONS §27). */
|
|
2
|
+
import type { ComponentType, CSSProperties, ReactNode } from 'react';
|
|
3
|
+
import { getPath, type PaperFoldConfig } from './config';
|
|
4
|
+
import { PANELS, type PanelId } from './controls';
|
|
5
|
+
import { frameState, mixHex, rgba, type EdgeFx, type FrameState, type HandState, type StripState, type TextFit } from './engine';
|
|
6
|
+
import { bottomHand, sleevePath, topHand, type HandArt, type HandFill, type HandPart, type HandShape } from './art';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* **The procedural renderer.** Draws one frame of paper-fold-promo from the engine's state with plain
|
|
10
|
+
* DOM and inline SVG. Each panel is its own box placed by the engine's `matrix3d` (true perspective
|
|
11
|
+
* about its crease), painted in the engine's explicit depth order; its copy is live text inside it.
|
|
12
|
+
* Hands are inline vector paths in two pieces (body behind the paper, gripping finger in front).
|
|
13
|
+
* No Remotion, no clock: the Remotion composition passes `useCurrentFrame()`, the web player a rAF
|
|
14
|
+
* clock, and both get the same pixels. Everything is laid out at the render size, so 4K is vector.
|
|
15
|
+
*
|
|
16
|
+
* `debug` (development only — never part of the config) overlays the creases, panel outlines and ids,
|
|
17
|
+
* fold pivots and angles, the hands' grip anchors, a normalized grid and the scene/frame.
|
|
18
|
+
*/
|
|
19
|
+
export type ImageProps = { src: string; style?: CSSProperties; alt: string };
|
|
20
|
+
export type PaperFoldFrameProps = {
|
|
21
|
+
/** A validated, complete config (resolveConfig). */
|
|
22
|
+
config: PaperFoldConfig;
|
|
23
|
+
/** Authored motion frame (60 fps). */
|
|
24
|
+
frame: number;
|
|
25
|
+
width: number;
|
|
26
|
+
height: number;
|
|
27
|
+
/** Development overlay. Not part of the config, so it can never reach a production render through it. */
|
|
28
|
+
debug?: boolean;
|
|
29
|
+
resolveAsset?: (ref: string) => string;
|
|
30
|
+
ImageComponent?: ComponentType<ImageProps>;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
const DefaultImage = ({ src, style, alt }: ImageProps) => <img src={src} style={style} alt={alt} />;
|
|
34
|
+
const defaultResolve = (ref: string) => (ref.startsWith('static:') ? `/${ref.slice(7)}` : ref);
|
|
35
|
+
export const FONT_STACK = (family: string) => `'${family}', 'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif`;
|
|
36
|
+
|
|
37
|
+
type Ctx = { st: FrameState; n: (p: string) => number; s: (p: string) => string; b: (p: string) => boolean };
|
|
38
|
+
const full: CSSProperties = { position: 'absolute', inset: 0 };
|
|
39
|
+
|
|
40
|
+
export function PaperFoldFrame({ config, frame, width, height, debug = false, resolveAsset = defaultResolve, ImageComponent = DefaultImage }: PaperFoldFrameProps) {
|
|
41
|
+
const st = frameState(config, frame, width, height);
|
|
42
|
+
const n = (p: string) => getPath(config, p) as number;
|
|
43
|
+
const s = (p: string) => getPath(config, p) as string;
|
|
44
|
+
const b = (p: string) => getPath(config, p) as boolean;
|
|
45
|
+
const ctx: Ctx = { st, n, s, b };
|
|
46
|
+
return (
|
|
47
|
+
<div
|
|
48
|
+
data-paper-fold-frame={Math.round(st.frame * 100) / 100}
|
|
49
|
+
data-phase={st.phase.label}
|
|
50
|
+
style={{ position: 'relative', width, height, overflow: 'hidden', background: s('background.baseColor'), fontFamily: FONT_STACK('Inter') }}
|
|
51
|
+
>
|
|
52
|
+
<div style={{ ...full, transformOrigin: '0 0', transform: st.camera.backgroundTransform }}>
|
|
53
|
+
<Background ctx={ctx} />
|
|
54
|
+
</div>
|
|
55
|
+
{b('background.noise.enabled') && <Noise ctx={ctx} />}
|
|
56
|
+
<div data-layer="scene" style={{ ...full, transformOrigin: '0 0', transform: st.camera.transform }}>
|
|
57
|
+
{b('paper.shadow.enabled') && <SheetShadow ctx={ctx} />}
|
|
58
|
+
{st.strips.map((p) => <StripView key={p.index} ctx={ctx} strip={p} last={st.strips.length - 1} />)}
|
|
59
|
+
{st.hands.filter((h) => h.enabled).map((h) => <Hand key={h.id} ctx={ctx} h={h} />)}
|
|
60
|
+
</div>
|
|
61
|
+
{b('logo.enabled') && <Logo ctx={ctx} img={(src, style, alt) => <ImageComponent src={resolveAsset(src)} style={style} alt={alt} />} />}
|
|
62
|
+
{b('cta.enabled') && s('content.cta.text') !== '' && <Cta ctx={ctx} />}
|
|
63
|
+
{debug && <Debug ctx={ctx} />}
|
|
64
|
+
</div>
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/* ─── background ──────────────────────────────────────────────────────────────────────────────── */
|
|
69
|
+
function Background({ ctx }: { ctx: Ctx }) {
|
|
70
|
+
const { st, n, s, b } = ctx;
|
|
71
|
+
const { width: W, height: H, unit: u } = st.size;
|
|
72
|
+
const stops = getPath(st.cfg, 'background.gradient.stops') as { offset: number; color: string }[];
|
|
73
|
+
const list = stops.map((x) => `${x.color} ${Math.round(x.offset * 1000) / 10}%`).join(', ');
|
|
74
|
+
const gradient = s('background.gradient.type') === 'radial' ? `radial-gradient(circle at 50% 45%, ${list})` : `linear-gradient(${n('background.gradient.angle')}deg, ${list})`;
|
|
75
|
+
const bt = 'background.backgroundTypography';
|
|
76
|
+
const size = n(`${bt}.fontSize`) * u * st.size.backgroundType.scale;
|
|
77
|
+
const word = Array.from({ length: st.background.typeRepeat }, () => s(`${bt}.text`)).join(' ');
|
|
78
|
+
const glowR = n('background.glow.radius') * Math.min(W, H);
|
|
79
|
+
return (
|
|
80
|
+
<>
|
|
81
|
+
{b('background.gradient.enabled') && <div style={{ ...full, background: gradient }} />}
|
|
82
|
+
{b(`${bt}.enabled`) && s(`${bt}.text`) !== '' && (
|
|
83
|
+
<div data-layer="background-type" style={{ ...full, transformOrigin: '50% 50%', transform: `rotate(${n(`${bt}.rotation`)}deg)`, opacity: n(`${bt}.opacity`) }}>
|
|
84
|
+
{st.background.typeRows.map((r, i) => (
|
|
85
|
+
<div
|
|
86
|
+
key={i}
|
|
87
|
+
style={{
|
|
88
|
+
position: 'absolute', left: r.x, top: r.y, whiteSpace: 'pre', lineHeight: 1, fontSize: size,
|
|
89
|
+
fontFamily: FONT_STACK(s(`${bt}.fontFamily`)), fontWeight: n(`${bt}.weight`), letterSpacing: `${n(`${bt}.tracking`)}em`, color: s(`${bt}.color`),
|
|
90
|
+
}}
|
|
91
|
+
>
|
|
92
|
+
{word}
|
|
93
|
+
</div>
|
|
94
|
+
))}
|
|
95
|
+
</div>
|
|
96
|
+
)}
|
|
97
|
+
{b('background.glow.enabled') && (
|
|
98
|
+
<div
|
|
99
|
+
style={{
|
|
100
|
+
position: 'absolute', left: n('background.glow.x') * W - glowR, top: n('background.glow.y') * H - glowR, width: glowR * 2, height: glowR * 2, borderRadius: '50%',
|
|
101
|
+
background: `radial-gradient(circle, ${rgba(s('background.glow.color'), n('background.glow.opacity'))} 0%, ${rgba(s('background.glow.color'), 0)} 70%)`,
|
|
102
|
+
filter: n('background.glow.blur') > 0 ? `blur(${n('background.glow.blur') * u}px)` : undefined,
|
|
103
|
+
}}
|
|
104
|
+
/>
|
|
105
|
+
)}
|
|
106
|
+
</>
|
|
107
|
+
);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
function Noise({ ctx }: { ctx: Ctx }) {
|
|
111
|
+
const { st, n } = ctx;
|
|
112
|
+
const { width: W, height: H, unit: u } = st.size;
|
|
113
|
+
const id = `pf-noise-${n('background.noise.seed')}`;
|
|
114
|
+
return (
|
|
115
|
+
<svg width={W} height={H} style={{ ...full, opacity: n('background.noise.opacity'), mixBlendMode: 'overlay' }} aria-hidden="true">
|
|
116
|
+
<filter id={id} x="0" y="0" width="100%" height="100%">
|
|
117
|
+
<feTurbulence type="fractalNoise" baseFrequency={0.75 / (u * n('background.noise.scale'))} numOctaves={2} seed={n('background.noise.seed')} stitchTiles="stitch" />
|
|
118
|
+
<feColorMatrix type="saturate" values="0" />
|
|
119
|
+
</filter>
|
|
120
|
+
<rect width={W} height={H} filter={`url(#${id})`} />
|
|
121
|
+
</svg>
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/* ─── the sheet ───────────────────────────────────────────────────────────────────────────────── */
|
|
126
|
+
function SheetShadow({ ctx }: { ctx: Ctx }) {
|
|
127
|
+
const { st, n, s } = ctx;
|
|
128
|
+
const u = st.size.unit;
|
|
129
|
+
const pts = (q: [number, number][]) => q.map(([x, y]) => `${Math.round(x * 10) / 10},${Math.round(y * 10) / 10}`).join(' ');
|
|
130
|
+
return (
|
|
131
|
+
<div data-layer="sheet-shadow" style={{ ...full, zIndex: 10, opacity: n('paper.shadow.opacity'), filter: `blur(${n('paper.shadow.blur') * u}px)`, transform: `translate(${n('paper.shadow.offsetX') * u}px, ${n('paper.shadow.offsetY') * u}px)` }}>
|
|
132
|
+
<svg width={st.size.width} height={st.size.height} style={{ position: 'absolute', left: 0, top: 0, overflow: 'visible' }} aria-hidden="true">
|
|
133
|
+
{st.shadowQuads.map((q, i) => <polygon key={i} points={pts(q)} fill={s('paper.shadow.color')} stroke={s('paper.shadow.color')} strokeWidth={2} />)}
|
|
134
|
+
</svg>
|
|
135
|
+
</div>
|
|
136
|
+
);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
function PrintedText({ ctx, fit, text }: { ctx: Ctx; fit: TextFit; text: string }) {
|
|
140
|
+
const { st, n, s } = ctx;
|
|
141
|
+
const T = `typography.${fit.slot}`;
|
|
142
|
+
const pu = st.size.pu;
|
|
143
|
+
const align = s(`${T}.alignment`) as 'left' | 'center' | 'right';
|
|
144
|
+
const shadow = n(`${T}.shadowOpacity`) > 0 ? `0 ${Math.max(1, n(`${T}.shadowBlur`) * pu * 0.3)}px ${n(`${T}.shadowBlur`) * pu}px ${rgba(s(`${T}.shadow`), n(`${T}.shadowOpacity`))}` : undefined;
|
|
145
|
+
const pill = fit.slot === 'bottomCta';
|
|
146
|
+
const box: CSSProperties = {
|
|
147
|
+
fontFamily: FONT_STACK(s(`${T}.fontFamily`)), fontWeight: n(`${T}.fontWeight`), fontStyle: s(`${T}.fontStyle`) as 'normal' | 'italic',
|
|
148
|
+
fontSize: fit.fontSize, lineHeight: n(`${T}.lineHeight`), letterSpacing: `${n(`${T}.letterSpacing`)}em`,
|
|
149
|
+
color: s(`${T}.color`), opacity: n(`${T}.opacity`), textAlign: align, whiteSpace: 'pre-line', overflowWrap: 'break-word', textShadow: shadow,
|
|
150
|
+
};
|
|
151
|
+
return (
|
|
152
|
+
<div
|
|
153
|
+
data-slot={fit.slot}
|
|
154
|
+
data-fit={fit.scale}
|
|
155
|
+
style={{
|
|
156
|
+
position: 'absolute', left: fit.x - fit.area.x, top: fit.y - fit.area.y, width: fit.width,
|
|
157
|
+
transformOrigin: `${align === 'left' ? 0 : align === 'center' ? 50 : 100}% 0%`,
|
|
158
|
+
transform: `rotate(${n(`${T}.rotation`)}deg) skewX(${n(`${T}.skew`)}deg) scale(${n(`${T}.scale`)})`,
|
|
159
|
+
...(pill ? {} : box),
|
|
160
|
+
}}
|
|
161
|
+
>
|
|
162
|
+
{pill
|
|
163
|
+
? <span style={{ ...box, display: 'inline-block', padding: '0.42em 0.95em', borderRadius: 999, background: s('cta.backgroundColor'), boxShadow: `0 ${0.12 * fit.fontSize}px ${0.4 * fit.fontSize}px ${rgba('#000000', 0.18)}` }}>{text}</span>
|
|
164
|
+
: text}
|
|
165
|
+
</div>
|
|
166
|
+
);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
const PANEL_TEXT: Record<PanelId, string[]> = {
|
|
170
|
+
top: ['topLogo', 'topHeadline', 'topSubtitle'], middle: ['middleHeadline', 'middleBody'], bottom: ['bottomHeadline', 'bottomBody', 'bottomCta'],
|
|
171
|
+
};
|
|
172
|
+
const SLOT_PATH: Record<string, string> = {
|
|
173
|
+
topLogo: 'content.top.logo', topHeadline: 'content.top.headline', topSubtitle: 'content.top.subtitle', middleHeadline: 'content.middle.headline',
|
|
174
|
+
middleBody: 'content.middle.body', bottomHeadline: 'content.bottom.headline', bottomBody: 'content.bottom.body', bottomCta: 'content.bottom.cta',
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* The print of the whole sheet, in sheet coordinates (0‥width × 0‥height): the paper of each region,
|
|
179
|
+
* its grain, the crease effects and every word. Every strip draws this same print, offset to its own
|
|
180
|
+
* height and clipped to itself, so the sheet stays ONE surface — gradient, grain, creases and text run
|
|
181
|
+
* on across the strips, and each word turns with exactly the part of the sheet it is printed on.
|
|
182
|
+
* Only the regions that reach the strip are drawn. `face` picks the front or the back of the paper.
|
|
183
|
+
*/
|
|
184
|
+
function SheetPrint({ ctx, face, y0, y1, brightness }: { ctx: Ctx; face: 'front' | 'back'; y0: number; y1: number; brightness: number }) {
|
|
185
|
+
const { st, n, s, b } = ctx;
|
|
186
|
+
const { width: PW, height: PH } = st.size.paper;
|
|
187
|
+
const pu = st.size.pu;
|
|
188
|
+
const reach = (a: number, c: number) => c >= y0 - 2 && a <= y1 + 2;
|
|
189
|
+
const mat = 'paperMaterial';
|
|
190
|
+
// Light: the paper takes the full shade, the print on it part of it (so white type stays crisp).
|
|
191
|
+
const textShade = brightness < 1 ? (1 - brightness) * 0.3 : 0;
|
|
192
|
+
const paperShade = brightness < 1 ? Math.min(0.92, 1 - brightness / (1 - textShade)) : 0;
|
|
193
|
+
const light = brightness > 1 ? Math.min(0.6, (brightness - 1) * 0.9) : 0;
|
|
194
|
+
const regions = PANELS.map((id) => ({ id, ...st.size.panels[id] })).filter((r) => reach(r.y0, r.y1));
|
|
195
|
+
const fill = (id: PanelId): CSSProperties => {
|
|
196
|
+
const P = `panels.${id}`;
|
|
197
|
+
if (face === 'back') return { backgroundColor: s(`${mat}.backColor`) };
|
|
198
|
+
const colour = s(`${P}.colorMode`) === 'own' ? s(`${P}.backgroundColor`) : s(`${mat}.baseColor`);
|
|
199
|
+
return b(`${mat}.gradientEnabled`) && b(`${P}.gradient`) && s(`${P}.colorMode`) !== 'own'
|
|
200
|
+
? { backgroundColor: colour, backgroundImage: `linear-gradient(${n(`${mat}.gradientAngle`)}deg, ${colour}, ${s(`${mat}.secondaryColor`)})`, backgroundSize: `${PW}px ${PH}px`, backgroundPosition: `0px ${-st.size.panels[id].y0}px` }
|
|
201
|
+
: { backgroundColor: colour };
|
|
202
|
+
};
|
|
203
|
+
return (
|
|
204
|
+
<div data-print={face} style={{ position: 'absolute', left: 0, top: 0, width: PW, height: PH }}>
|
|
205
|
+
{regions.map((r) => (
|
|
206
|
+
<div key={r.id} data-region={r.id} style={{ position: 'absolute', left: 0, top: r.y0, width: PW, height: r.height, ...fill(r.id) }}>
|
|
207
|
+
<PaperGrain ctx={ctx} w={PW} h={r.height} y0={r.y0} k={n(`panels.${r.id}.textureOpacity`)} />
|
|
208
|
+
</div>
|
|
209
|
+
))}
|
|
210
|
+
{paperShade > 0 && <div style={{ ...full, background: '#000000', opacity: paperShade }} />}
|
|
211
|
+
{light > 0 && <div style={{ ...full, background: '#ffffff', opacity: light }} />}
|
|
212
|
+
{st.panels.map((p) => p.edges.map((e) => {
|
|
213
|
+
const yc = st.size.creases[e.crease];
|
|
214
|
+
const span = Math.max(e.shadow.length + e.shadow.blur, e.valley.length, e.line.width) + 2;
|
|
215
|
+
return (face === 'front' || e.edge === 'bottom') && reach(yc - span, yc + span)
|
|
216
|
+
? <CreaseEffects key={`${p.id}${e.edge}`} e={face === 'front' ? e : { ...e, valley: { ...e.valley, opacity: 0 }, shadow: { ...e.shadow, opacity: 0 } }} yc={yc} w={PW} pu={pu} tint={mixHex(e.line.color, '#000000', 0.55)} />
|
|
217
|
+
: null;
|
|
218
|
+
}))}
|
|
219
|
+
<OuterEdges ctx={ctx} w={PW} h={PH} />
|
|
220
|
+
{face === 'front' && regions.map((r) => <PanelContent key={r.id} ctx={ctx} id={r.id} />)}
|
|
221
|
+
{face === 'back' && s('content.back.text') !== '' && regions.some((r) => r.id === s('content.back.panel')) && <BackContent ctx={ctx} id={s('content.back.panel') as PanelId} />}
|
|
222
|
+
{textShade > 0 && <div style={{ ...full, background: '#000000', opacity: textShade }} />}
|
|
223
|
+
</div>
|
|
224
|
+
);
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
function PanelContent({ ctx, id }: { ctx: Ctx; id: PanelId }) {
|
|
228
|
+
const { st, n, s, b } = ctx;
|
|
229
|
+
const { y0, height: h } = st.size.panels[id];
|
|
230
|
+
const PW = st.size.paper.width, pu = st.size.pu;
|
|
231
|
+
const P = `panels.${id}`;
|
|
232
|
+
const fits = st.text.filter((t) => t.panel === id && PANEL_TEXT[id].includes(t.slot));
|
|
233
|
+
if (!fits.length) return null;
|
|
234
|
+
const area = fits[0]!.area;
|
|
235
|
+
const overflow = b(`${P}.overflow`);
|
|
236
|
+
return (
|
|
237
|
+
<div data-content={id} style={{ position: 'absolute', left: 0, top: y0, width: PW, height: h, overflow: overflow ? 'visible' : 'hidden' }}>
|
|
238
|
+
<div style={{ ...full, transformOrigin: '50% 50%', transform: `translate(${n(`${P}.contentOffsetX`) * pu}px, ${n(`${P}.contentOffsetY`) * pu}px) rotate(${n(`${P}.contentRotation`)}deg) scale(${n(`${P}.contentScale`)})` }}>
|
|
239
|
+
<div data-content-area={id} style={{ position: 'absolute', left: area.x, top: area.y, width: area.width, height: area.height, overflow: overflow ? 'visible' : 'hidden' }}>
|
|
240
|
+
{fits.map((f) => <PrintedText key={f.slot} ctx={ctx} fit={f} text={s(SLOT_PATH[f.slot]!)} />)}
|
|
241
|
+
</div>
|
|
242
|
+
</div>
|
|
243
|
+
</div>
|
|
244
|
+
);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/** Print on the back of a panel: laid out upside down, so it reads upright once the panel turns over. */
|
|
248
|
+
function BackContent({ ctx, id }: { ctx: Ctx; id: PanelId }) {
|
|
249
|
+
const { st, n, s } = ctx;
|
|
250
|
+
const { y0, height: h } = st.size.panels[id];
|
|
251
|
+
const PW = st.size.paper.width, pu = st.size.pu;
|
|
252
|
+
const T = 'typography.back';
|
|
253
|
+
const fit: TextFit = { slot: 'back', panel: id, x: n(`${T}.x`) * PW, y: n(`${T}.y`) * h, width: n(`${T}.maxWidth`) * PW, fontSize: n(`${T}.fontSize`) * pu, scale: 1, lines: 1, area: { x: 0, y: 0, width: PW, height: h } };
|
|
254
|
+
return (
|
|
255
|
+
<div data-content="back" style={{ position: 'absolute', left: 0, top: y0, width: PW, height: h, overflow: 'hidden', transform: 'scaleY(-1)' }}>
|
|
256
|
+
<PrintedText ctx={ctx} fit={fit} text={s('content.back.text')} />
|
|
257
|
+
</div>
|
|
258
|
+
);
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
/**
|
|
262
|
+
* One strip of the sheet — a panel's flat part or one step of a crease's bend — placed by its own
|
|
263
|
+
* matrix3d and painted at its explicit depth. It shows the front or the back of the one sheet print.
|
|
264
|
+
* Each strip reaches a hair under the next (at most 1.5 px) so no seam opens between them.
|
|
265
|
+
*/
|
|
266
|
+
function StripView({ ctx, strip, last }: { ctx: Ctx; strip: StripState; last: number }) {
|
|
267
|
+
const { st, n, s } = ctx;
|
|
268
|
+
const PW = st.size.paper.width, pu = st.size.pu;
|
|
269
|
+
const h = strip.y1 - strip.y0;
|
|
270
|
+
const ov = strip.index < last ? Math.min(1.5, h * 0.5) : 0;
|
|
271
|
+
const radius = n('paper.cornerRadius') * pu;
|
|
272
|
+
const corners = strip.index === 0 ? `${radius}px ${radius}px 0 0` : strip.index === last ? `0 0 ${radius}px ${radius}px` : '0';
|
|
273
|
+
const edge = n('paper.thickness') * pu * strip.edgeOn;
|
|
274
|
+
return (
|
|
275
|
+
<div
|
|
276
|
+
data-strip={strip.index}
|
|
277
|
+
data-region={strip.region}
|
|
278
|
+
data-facing={strip.facing}
|
|
279
|
+
data-rank={strip.rank}
|
|
280
|
+
style={{ position: 'absolute', left: 0, top: 0, width: PW, height: h + ov, transformOrigin: '0 0', transform: strip.matrix, zIndex: strip.z, overflow: 'hidden', borderRadius: corners }}
|
|
281
|
+
>
|
|
282
|
+
<div style={{ position: 'absolute', left: 0, top: -strip.y0, width: PW, height: st.size.paper.height }}>
|
|
283
|
+
<SheetPrint ctx={ctx} face={strip.facing} y0={strip.y0} y1={strip.y1} brightness={strip.brightness} />
|
|
284
|
+
</div>
|
|
285
|
+
{strip.sheen > 0.002 && <div style={{ ...full, background: 'linear-gradient(160deg, rgba(255,255,255,0.9), rgba(255,255,255,0) 70%)', opacity: strip.sheen }} />}
|
|
286
|
+
{edge > 0.4 && (
|
|
287
|
+
// The paper's cut edge (its thickness) shows as the strip turns edge-on.
|
|
288
|
+
<>
|
|
289
|
+
<div style={{ position: 'absolute', left: 0, top: 0, width: edge, height: h + ov, background: s('paper.edgeColor') }} />
|
|
290
|
+
<div style={{ position: 'absolute', right: 0, top: 0, width: edge, height: h + ov, background: s('paper.edgeColor') }} />
|
|
291
|
+
</>
|
|
292
|
+
)}
|
|
293
|
+
</div>
|
|
294
|
+
);
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
function PaperGrain({ ctx, w, h, y0, k }: { ctx: Ctx; w: number; h: number; y0: number; k: number }) {
|
|
298
|
+
const { st, n, b } = ctx;
|
|
299
|
+
const tex = n('paperMaterial.textureOpacity') * k, grain = b('paperMaterial.grainEnabled') ? n('paperMaterial.grainOpacity') * k : 0;
|
|
300
|
+
if (tex <= 0 && grain <= 0) return null;
|
|
301
|
+
const seed = n('paperMaterial.grainSeed');
|
|
302
|
+
const pu = st.size.pu, gs = n('paperMaterial.grainScale');
|
|
303
|
+
// Sampled in sheet coordinates (the viewBox starts at the region's y), so fibres run on across the creases.
|
|
304
|
+
return (
|
|
305
|
+
<svg width={w} height={h} viewBox={`0 ${y0} ${w} ${h}`} style={{ ...full, mixBlendMode: 'soft-light' }} aria-hidden="true">
|
|
306
|
+
<filter id={`pf-fibre-${seed}`} x="0" y="0" width="100%" height="100%" filterUnits="userSpaceOnUse">
|
|
307
|
+
<feTurbulence type="fractalNoise" baseFrequency={`${0.9 / (pu * 60)} ${0.9 / (pu * 3)}`} numOctaves={3} seed={seed} />
|
|
308
|
+
<feColorMatrix type="saturate" values="0" />
|
|
309
|
+
</filter>
|
|
310
|
+
<filter id={`pf-grain-${seed}`} x="0" y="0" width="100%" height="100%" filterUnits="userSpaceOnUse">
|
|
311
|
+
<feTurbulence type="fractalNoise" baseFrequency={0.8 / Math.max(0.6, pu * gs)} numOctaves={1} seed={seed + 1} />
|
|
312
|
+
<feColorMatrix type="saturate" values="0" />
|
|
313
|
+
</filter>
|
|
314
|
+
{tex > 0 && <rect x={0} y={y0} width={w} height={h} filter={`url(#pf-fibre-${seed})`} opacity={Math.min(1, tex * 3)} />}
|
|
315
|
+
{grain > 0 && <rect x={0} y={y0} width={w} height={h} filter={`url(#pf-grain-${seed})`} opacity={Math.min(1, grain * 3)} />}
|
|
316
|
+
</svg>
|
|
317
|
+
);
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
/** A crease's line, ridge highlight, valley shading and the shadow of the panel closing over — at sheet height `yc`. */
|
|
321
|
+
function CreaseEffects({ e, yc, w, pu, tint }: { e: EdgeFx; yc: number; w: number; pu: number; tint: string }) {
|
|
322
|
+
// `edge` is the panel's side of the crease: 'bottom' = the panel above it (effects run upward), 'top' = below (downward).
|
|
323
|
+
const down = e.edge === 'top';
|
|
324
|
+
const band = (length: number): CSSProperties => ({ position: 'absolute', left: 0, width: w, height: length, top: down ? yc : yc - length });
|
|
325
|
+
const dir = down ? 'to bottom' : 'to top';
|
|
326
|
+
const half = e.line.width / 2;
|
|
327
|
+
return (
|
|
328
|
+
<div data-crease={e.crease} data-edge={e.edge}>
|
|
329
|
+
{e.shadow.opacity > 0.002 && e.shadow.length > 0 && (
|
|
330
|
+
<div style={{ ...band(e.shadow.length + e.shadow.blur), background: `linear-gradient(${dir}, ${rgba(tint, e.shadow.opacity)} 0px, ${rgba(tint, e.shadow.opacity * 0.85)} ${e.shadow.length * 0.8}px, ${rgba(tint, 0)} ${e.shadow.length + e.shadow.blur}px)` }} />
|
|
331
|
+
)}
|
|
332
|
+
{e.valley.opacity > 0.002 && <div style={{ ...band(e.valley.length), background: `linear-gradient(${dir}, ${rgba(tint, e.valley.opacity)}, ${rgba(tint, 0)})` }} />}
|
|
333
|
+
{e.highlight.opacity > 0.002 && (
|
|
334
|
+
<div style={{ position: 'absolute', left: 0, width: w, height: e.highlight.width, top: down ? yc + half : yc - half - e.highlight.width, background: rgba(e.highlight.color, e.highlight.opacity), filter: `blur(${Math.max(0.3, pu * 0.8)}px)` }} />
|
|
335
|
+
)}
|
|
336
|
+
{e.line.opacity > 0.002 && (
|
|
337
|
+
<div style={{ position: 'absolute', left: 0, width: w, height: Math.max(0.5, half), top: down ? yc : yc - half, background: rgba(e.line.color, e.line.opacity), filter: e.line.blur > 0.2 ? `blur(${e.line.blur}px)` : undefined }} />
|
|
338
|
+
)}
|
|
339
|
+
</div>
|
|
340
|
+
);
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
function OuterEdges({ ctx, w, h }: { ctx: Ctx; w: number; h: number }) {
|
|
344
|
+
const { st, n } = ctx;
|
|
345
|
+
const hi = n('paperMaterial.edgeHighlight'), sh = n('paperMaterial.edgeShadow');
|
|
346
|
+
if (hi <= 0 && sh <= 0) return null;
|
|
347
|
+
const t = Math.max(1, 2.2 * st.size.pu);
|
|
348
|
+
const light = rgba('#ffffff', hi), dark = rgba('#000000', sh);
|
|
349
|
+
return (
|
|
350
|
+
<>
|
|
351
|
+
<div style={{ position: 'absolute', left: 0, top: 0, width: t, height: h, background: light }} />
|
|
352
|
+
<div style={{ position: 'absolute', right: 0, top: 0, width: t, height: h, background: dark }} />
|
|
353
|
+
<div style={{ position: 'absolute', left: 0, top: 0, width: w, height: t, background: light }} />
|
|
354
|
+
<div style={{ position: 'absolute', left: 0, bottom: 0, width: w, height: t, background: dark }} />
|
|
355
|
+
</>
|
|
356
|
+
);
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
/* ─── hands ───────────────────────────────────────────────────────────────────────────────────── */
|
|
360
|
+
/** The hand's drawing, built from its skeleton with the current pose (the grip opening is animated). */
|
|
361
|
+
export function handArt(cfg: PaperFoldConfig, h: HandState): HandArt {
|
|
362
|
+
const n = (p: string) => getPath(cfg, p) as number;
|
|
363
|
+
const pose = { ...h.pose, armLength: n(`hands.${h.id}.armLength`) * 0.6, open: h.fingerAngle, nails: getPath(cfg, 'hands.nails.enabled') as boolean, nailScale: n('hands.nails.scale') };
|
|
364
|
+
return h.id === 'top' ? topHand(pose) : bottomHand(pose);
|
|
365
|
+
}
|
|
366
|
+
/** The SVG transform that places hand units on the canvas at the hand's grip anchor. */
|
|
367
|
+
export const handTransform = (h: HandState) =>
|
|
368
|
+
`translate(${h.x} ${h.y}) rotate(${h.rotation}) skewX(${h.skewX}) skewY(${h.skewY}) scale(${h.unitScale * h.scale}) translate(${h.offsetX} ${h.offsetY})`;
|
|
369
|
+
|
|
370
|
+
function Hand({ ctx, h }: { ctx: Ctx; h: HandState }) {
|
|
371
|
+
const { st, n, s, b } = ctx;
|
|
372
|
+
const art = handArt(st.cfg, h);
|
|
373
|
+
const S = 'hands.style';
|
|
374
|
+
const colours: Record<HandFill, string> = {
|
|
375
|
+
base: s(`${S}.baseColor`), midtone: s(`${S}.midtoneColor`), shadow: s(`${S}.shadowColor`),
|
|
376
|
+
highlight: s(`${S}.highlightColor`), nail: s(`${S}.nailColor`), sleeve: s(`${S}.sleeve.color`),
|
|
377
|
+
};
|
|
378
|
+
const ow = n(`${S}.outlineWidth`);
|
|
379
|
+
const shape = (part: HandPart, sh: HandShape, i: number) => {
|
|
380
|
+
const o = part.name === 'highlights' ? n(`${S}.highlightOpacity`) : part.name === 'fingerShadows' || part.name === 'palmShadow' ? n(`${S}.shadowOpacity`) : part.name === 'nails' ? n('hands.nails.opacity') : 1;
|
|
381
|
+
return <path key={i} d={sh.d} fill={colours[sh.fill]} fillOpacity={(sh.opacity ?? 1) * o} {...(sh.outline && ow > 0 ? { stroke: s(`${S}.outlineColor`), strokeWidth: ow * 0.6, strokeLinejoin: 'round' as const } : {})} />;
|
|
382
|
+
};
|
|
383
|
+
// Once the held panel has turned over, the digits holding it from behind are on its visible side:
|
|
384
|
+
// they show only where they lie on that panel (clipped to its outline), never past its edge.
|
|
385
|
+
const held = st.panels.find((p) => p.id === h.panel)!;
|
|
386
|
+
const clipId = `pf-held-${h.id}`;
|
|
387
|
+
const clipped = held.facing === 'back';
|
|
388
|
+
const group = (layer: 'behind' | 'front') => art.parts.filter((p) => p.layer === layer).map((p, i) => {
|
|
389
|
+
const g = (
|
|
390
|
+
<g key={`${p.name}${i}`} data-part={p.name} {...(p.grips ? { 'data-grips': 'true' } : {})}>
|
|
391
|
+
{p.shapes.map((sh, j) => shape(p, sh, j))}
|
|
392
|
+
{p.name === 'forearm' && b(`${S}.sleeve.enabled`) && <path data-part="sleeve" d={sleevePath(art, n(`${S}.sleeve.position`), n(`hands.${h.id}.armLength`) * 0.6)} fill={colours.sleeve} />}
|
|
393
|
+
</g>
|
|
394
|
+
);
|
|
395
|
+
return p.grips && clipped ? <g key={`c${p.name}${i}`} clipPath={`url(#${clipId})`}><g transform={handTransform(h)}>{g}</g></g> : <g key={`t${p.name}${i}`} transform={handTransform(h)}>{g}</g>;
|
|
396
|
+
});
|
|
397
|
+
const svg: CSSProperties = { position: 'absolute', left: 0, top: 0, overflow: 'visible', opacity: h.opacity, pointerEvents: 'none' };
|
|
398
|
+
const { width: W, height: H } = st.size;
|
|
399
|
+
const pu = st.size.pu;
|
|
400
|
+
// The gripping digits cast a small contact shadow on the paper.
|
|
401
|
+
const drop = n(`${S}.dropShadowOpacity`) > 0 ? `drop-shadow(${n(`${S}.dropShadowOffset`) * pu * 0.5}px ${n(`${S}.dropShadowOffset`) * pu}px ${n(`${S}.dropShadowBlur`) * pu}px ${rgba('#1a0526', n(`${S}.dropShadowOpacity`))})` : undefined;
|
|
402
|
+
return (
|
|
403
|
+
<>
|
|
404
|
+
<svg data-hand={h.id} data-piece="body" width={W} height={H} style={{ ...svg, zIndex: h.bodyZ }} aria-hidden="true">
|
|
405
|
+
{clipped && <defs><clipPath id={clipId} clipPathUnits="userSpaceOnUse"><polygon points={held.corners.map(([x, y]) => `${x},${y}`).join(' ')} /></clipPath></defs>}
|
|
406
|
+
{group('behind')}
|
|
407
|
+
</svg>
|
|
408
|
+
<svg data-hand={h.id} data-piece="finger" width={W} height={H} style={{ ...svg, zIndex: h.fingerZ, filter: drop }} aria-hidden="true">
|
|
409
|
+
{group('front')}
|
|
410
|
+
</svg>
|
|
411
|
+
</>
|
|
412
|
+
);
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
/* ─── logo and CTA ────────────────────────────────────────────────────────────────────────────── */
|
|
416
|
+
function Logo({ ctx, img }: { ctx: Ctx; img: (src: string, style: CSSProperties, alt: string) => ReactNode }) {
|
|
417
|
+
const { st, n, s, b } = ctx;
|
|
418
|
+
const u = st.size.unit;
|
|
419
|
+
const T = 'typography.logo';
|
|
420
|
+
const size = n(`${T}.fontSize`) * u;
|
|
421
|
+
const mark = n('logo.markSize') * size;
|
|
422
|
+
const shadow = n(`${T}.shadowOpacity`) > 0 ? `0 ${n(`${T}.shadowBlur`) * u * 0.3}px ${n(`${T}.shadowBlur`) * u}px ${rgba(s(`${T}.shadow`), n(`${T}.shadowOpacity`))}` : undefined;
|
|
423
|
+
const image = s('logo.image');
|
|
424
|
+
return (
|
|
425
|
+
<div
|
|
426
|
+
data-layer="logo"
|
|
427
|
+
style={{
|
|
428
|
+
position: 'absolute', left: st.logo.x, top: st.logo.y, zIndex: 900, opacity: st.logo.opacity, display: 'flex', alignItems: 'center', gap: n('logo.gap') * size, whiteSpace: 'nowrap',
|
|
429
|
+
transform: `translate(-50%, -50%) rotate(${n('logo.rotation')}deg) scale(${st.logo.scale})`,
|
|
430
|
+
}}
|
|
431
|
+
>
|
|
432
|
+
{image !== '' ? img(image, { height: n('logo.imageHeight') * u, width: 'auto', display: 'block' }, s('content.logo') || 'logo') : (
|
|
433
|
+
<>
|
|
434
|
+
{b('logo.showMark') && (
|
|
435
|
+
<div
|
|
436
|
+
data-part="logo-mark"
|
|
437
|
+
style={{
|
|
438
|
+
width: mark, height: mark, borderRadius: n('logo.markRadius') * mark, display: 'flex', alignItems: 'center', justifyContent: 'center',
|
|
439
|
+
background: `linear-gradient(135deg, ${s('logo.markColor')}, ${s('logo.markColorEnd')})`, color: s('logo.markTextColor'),
|
|
440
|
+
fontFamily: FONT_STACK(s(`${T}.fontFamily`)), fontWeight: 800, fontSize: mark * 0.72, lineHeight: 1,
|
|
441
|
+
}}
|
|
442
|
+
>
|
|
443
|
+
{s('logo.markText')}
|
|
444
|
+
</div>
|
|
445
|
+
)}
|
|
446
|
+
{s('content.logo') !== '' && (
|
|
447
|
+
<span
|
|
448
|
+
data-part="logo-word"
|
|
449
|
+
style={{
|
|
450
|
+
fontFamily: FONT_STACK(s(`${T}.fontFamily`)), fontWeight: n(`${T}.fontWeight`), fontStyle: s(`${T}.fontStyle`) as 'normal' | 'italic', fontSize: size, lineHeight: 1,
|
|
451
|
+
letterSpacing: `${n(`${T}.letterSpacing`)}em`, color: s(`${T}.color`), opacity: n(`${T}.opacity`), textShadow: shadow,
|
|
452
|
+
}}
|
|
453
|
+
>
|
|
454
|
+
{s('content.logo')}
|
|
455
|
+
</span>
|
|
456
|
+
)}
|
|
457
|
+
</>
|
|
458
|
+
)}
|
|
459
|
+
</div>
|
|
460
|
+
);
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
function Cta({ ctx }: { ctx: Ctx }) {
|
|
464
|
+
const { st, n, s } = ctx;
|
|
465
|
+
const u = st.size.unit;
|
|
466
|
+
const T = 'typography.cta';
|
|
467
|
+
const shadow = n('cta.shadowOpacity') > 0 ? `0 ${n('cta.shadowBlur') * u * 0.35}px ${n('cta.shadowBlur') * u}px ${rgba(s('cta.shadowColor'), n('cta.shadowOpacity'))}` : undefined;
|
|
468
|
+
return (
|
|
469
|
+
<div
|
|
470
|
+
data-layer="cta"
|
|
471
|
+
style={{
|
|
472
|
+
position: 'absolute', left: st.cta.x, top: st.cta.y, zIndex: 900, opacity: st.cta.opacity, whiteSpace: 'nowrap',
|
|
473
|
+
transform: `translate(-50%, -50%) rotate(${n('cta.rotation')}deg) scale(${st.cta.scale})`,
|
|
474
|
+
background: s('cta.backgroundColor'), border: n('cta.borderWidth') > 0 ? `${n('cta.borderWidth') * u}px solid ${s('cta.borderColor')}` : undefined,
|
|
475
|
+
borderRadius: n('cta.radius') * u, padding: `${n('cta.paddingY') * u}px ${n('cta.paddingX') * u}px`, boxShadow: shadow,
|
|
476
|
+
fontFamily: FONT_STACK(s(`${T}.fontFamily`)), fontWeight: n(`${T}.fontWeight`), fontStyle: s(`${T}.fontStyle`) as 'normal' | 'italic', fontSize: n(`${T}.fontSize`) * u, lineHeight: 1.2,
|
|
477
|
+
letterSpacing: `${n(`${T}.letterSpacing`)}em`, color: s(`${T}.color`),
|
|
478
|
+
textShadow: n(`${T}.shadowOpacity`) > 0 ? `0 0 ${n(`${T}.shadowBlur`) * u}px ${rgba(s(`${T}.shadow`), n(`${T}.shadowOpacity`))}` : undefined,
|
|
479
|
+
}}
|
|
480
|
+
>
|
|
481
|
+
<span style={{ opacity: n(`${T}.opacity`) }}>{s('content.cta.text')}</span>
|
|
482
|
+
</div>
|
|
483
|
+
);
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
/* ─── debug overlay (development only) ────────────────────────────────────────────────────────── */
|
|
487
|
+
function Debug({ ctx }: { ctx: Ctx }) {
|
|
488
|
+
const { st } = ctx;
|
|
489
|
+
const { width: W, height: H, unit: u } = st.size;
|
|
490
|
+
const fs = 14 * u;
|
|
491
|
+
const label = (x: number, y: number, lines: string[], colour = '#00ffd0') => (
|
|
492
|
+
<text x={x} y={y} fill={colour} fontSize={fs} fontFamily="ui-monospace, Menlo, monospace" stroke="#000000" strokeWidth={fs * 0.18} paintOrder="stroke">
|
|
493
|
+
{lines.map((l, i) => <tspan key={i} x={x} dy={i === 0 ? 0 : fs * 1.2}>{l}</tspan>)}
|
|
494
|
+
</text>
|
|
495
|
+
);
|
|
496
|
+
const pts = (q: [number, number][]) => q.map(([x, y]) => `${x},${y}`).join(' ');
|
|
497
|
+
const centre = (q: [number, number][]) => [q.reduce((a, p) => a + p[0], 0) / 4, q.reduce((a, p) => a + p[1], 0) / 4] as const;
|
|
498
|
+
// The grid and the read-out are fixed to the canvas; the geometry follows the camera so it sits on the drawing.
|
|
499
|
+
return (
|
|
500
|
+
<div data-layer="debug" style={{ ...full, zIndex: 2000, pointerEvents: 'none' }}>
|
|
501
|
+
<svg width={W} height={H} style={{ position: 'absolute', left: 0, top: 0 }} aria-hidden="true">
|
|
502
|
+
{Array.from({ length: 9 }, (_, i) => (i + 1) / 10).map((v) => (
|
|
503
|
+
<g key={v} opacity={0.35}>
|
|
504
|
+
<line x1={v * W} y1={0} x2={v * W} y2={H} stroke="#ffffff" strokeWidth={u} strokeDasharray={`${4 * u} ${6 * u}`} />
|
|
505
|
+
<line x1={0} y1={v * H} x2={W} y2={v * H} stroke="#ffffff" strokeWidth={u} strokeDasharray={`${4 * u} ${6 * u}`} />
|
|
506
|
+
{label(v * W + 3 * u, 16 * u, [v.toFixed(1)], '#ffffff')}
|
|
507
|
+
{label(3 * u, v * H - 4 * u, [v.toFixed(1)], '#ffffff')}
|
|
508
|
+
</g>
|
|
509
|
+
))}
|
|
510
|
+
</svg>
|
|
511
|
+
<svg width={W} height={H} style={{ position: 'absolute', left: 0, top: 0, overflow: 'visible', transformOrigin: '0 0', transform: st.camera.transform }} aria-hidden="true">
|
|
512
|
+
<g>
|
|
513
|
+
{st.panels.map((p) => {
|
|
514
|
+
const [cx, cy] = centre(p.corners);
|
|
515
|
+
return (
|
|
516
|
+
<g key={p.id}>
|
|
517
|
+
<polygon points={pts(p.corners)} fill="none" stroke={p.facing === 'front' ? '#00ffd0' : '#ff9d00'} strokeWidth={2 * u} strokeDasharray={p.facing === 'front' ? undefined : `${8 * u} ${5 * u}`} />
|
|
518
|
+
{label(cx - 60 * u, cy, [`${p.id.toUpperCase()} PANEL`, `${p.facing} · rank ${p.rank} · z ${p.z}`, `light ${p.brightness.toFixed(2)}`])}
|
|
519
|
+
</g>
|
|
520
|
+
);
|
|
521
|
+
})}
|
|
522
|
+
{st.debug.creases.map((c, i) => {
|
|
523
|
+
const mx = (c.from[0] + c.to[0]) / 2, my = (c.from[1] + c.to[1]) / 2;
|
|
524
|
+
return (
|
|
525
|
+
<g key={c.id}>
|
|
526
|
+
<line x1={c.from[0]} y1={c.from[1]} x2={c.to[0]} y2={c.to[1]} stroke="#ff2d78" strokeWidth={3 * u} />
|
|
527
|
+
<circle cx={mx} cy={my} r={7 * u} fill="#ff2d78" stroke="#ffffff" strokeWidth={1.5 * u} />
|
|
528
|
+
{label(c.to[0] + 10 * u, c.to[1] + (i ? 18 : -8) * u, [`CREASE ${c.id.toUpperCase()} ${c.position.toFixed(3)}`, `ANGLE: ${c.angle.toFixed(1)}°`, `pivot (${(mx / W).toFixed(3)}, ${(my / H).toFixed(3)})`], '#ff2d78')}
|
|
529
|
+
</g>
|
|
530
|
+
);
|
|
531
|
+
})}
|
|
532
|
+
{/* Paper bounds: the outline of the one sheet, down its left edge and back up its right. */}
|
|
533
|
+
<polygon
|
|
534
|
+
points={[...st.strips.flatMap((p) => [p.corners[0]!, p.corners[3]!]), ...[...st.strips].reverse().flatMap((p) => [p.corners[2]!, p.corners[1]!])].map(([x, y]) => `${x},${y}`).join(' ')}
|
|
535
|
+
fill="none" stroke="#ffffff" strokeWidth={3 * u} strokeDasharray={`${2 * u} ${4 * u}`}
|
|
536
|
+
/>
|
|
537
|
+
{st.strips.filter((p) => p.region.startsWith('crease')).map((p) => <polygon key={p.index} points={pts(p.corners)} fill="none" stroke="#ff2d78" strokeWidth={0.8 * u} opacity={0.6} />)}
|
|
538
|
+
{st.hands.map((h) => {
|
|
539
|
+
const art = handArt(st.cfg, h);
|
|
540
|
+
const k = h.unitScale * h.scale;
|
|
541
|
+
return (
|
|
542
|
+
<g key={`joints-${h.id}`} transform={handTransform(h)}>
|
|
543
|
+
{Object.entries(art.joints).map(([name, js]) => (
|
|
544
|
+
<g key={name}>
|
|
545
|
+
<polyline points={js.map(([x, y]) => `${x},${y}`).join(' ')} fill="none" stroke="#7df9ff" strokeWidth={1.5 * u / k} />
|
|
546
|
+
{js.map(([x, y], i) => <circle key={i} cx={x} cy={y} r={3.2 * u / k} fill={i === 0 ? '#ffffff' : '#7df9ff'} />)}
|
|
547
|
+
</g>
|
|
548
|
+
))}
|
|
549
|
+
</g>
|
|
550
|
+
);
|
|
551
|
+
})}
|
|
552
|
+
{st.hands.map((h) => (
|
|
553
|
+
<g key={h.id}>
|
|
554
|
+
<circle cx={st.anchors[h.id].hand[0]} cy={st.anchors[h.id].hand[1]} r={10 * u} fill="none" stroke="#7df9ff" strokeWidth={2 * u} />
|
|
555
|
+
<line x1={h.gripX - 14 * u} y1={h.gripY} x2={h.gripX + 14 * u} y2={h.gripY} stroke="#ffe600" strokeWidth={2.5 * u} />
|
|
556
|
+
<line x1={h.gripX} y1={h.gripY - 14 * u} x2={h.gripX} y2={h.gripY + 14 * u} stroke="#ffe600" strokeWidth={2.5 * u} />
|
|
557
|
+
<circle cx={h.x} cy={h.y} r={6 * u} fill="none" stroke="#ffe600" strokeWidth={2 * u} />
|
|
558
|
+
{label(h.gripX + 16 * u, h.gripY - 10 * u, [`HAND ${h.id.toUpperCase()} → ${h.panel}`, `paper.${h.id}GripAnchor (${(h.gripX / W).toFixed(3)}, ${(h.gripY / H).toFixed(3)})`, `${h.id}Hand.gripAnchor Δ ${Math.hypot(st.anchors[h.id].hand[0] - h.gripX, st.anchors[h.id].hand[1] - h.gripY).toFixed(1)} px`, `z body ${h.bodyZ} · finger ${h.fingerZ}`], '#ffe600')}
|
|
559
|
+
</g>
|
|
560
|
+
))}
|
|
561
|
+
</g>
|
|
562
|
+
</svg>
|
|
563
|
+
<svg width={W} height={H} style={{ position: 'absolute', left: 0, top: 0 }} aria-hidden="true">
|
|
564
|
+
<rect x={10 * u} y={24 * u} width={330 * u} height={7 * fs * 1.2 + 16 * u} fill="#000000" opacity={0.6} rx={6 * u} />
|
|
565
|
+
{label(20 * u, 24 * u + fs * 1.3, [
|
|
566
|
+
'DEBUG',
|
|
567
|
+
`FRAME: ${st.frame.toFixed(1)} / ${st.timeline.end}`,
|
|
568
|
+
`SCENE: ${st.phase.label} ${(st.phase.progress * 100).toFixed(0)}%`,
|
|
569
|
+
...st.folds.map((f) => `${f.id.toUpperCase()} FOLD ANGLE: ${f.angle.toFixed(1)}° (${f.phase})`),
|
|
570
|
+
`ANCHOR: ${st.anchor.toUpperCase()} PANEL · ZOOM ${st.camera.zoom.toFixed(3)}`,
|
|
571
|
+
`ORDER: ${[...st.panels].sort((a, c) => a.rank - c.rank).map((p) => p.id).join(' < ')} · ${st.strips.length} strips`,
|
|
572
|
+
])}
|
|
573
|
+
</svg>
|
|
574
|
+
</div>
|
|
575
|
+
);
|
|
576
|
+
}
|