@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,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* **Component search — its internal types.** None of this is part of the agent contract: the agent
|
|
3
|
+
* calls `searchComponents(query)` and gets cards. How candidates are found — lexical, semantic,
|
|
4
|
+
* in memory or not — can change without it knowing.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/** Turns text into vectors. Swap it for a hosted model without touching the search. */
|
|
8
|
+
export interface EmbeddingProvider {
|
|
9
|
+
/** Changes whenever the vectors would: part of the index version. */
|
|
10
|
+
readonly id: string;
|
|
11
|
+
embed(texts: readonly string[]): Float32Array[];
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/** The same, for a provider that has to wait (a hosted embedding API). */
|
|
15
|
+
export interface AsyncEmbeddingProvider {
|
|
16
|
+
readonly id: string;
|
|
17
|
+
embed(texts: readonly string[]): Promise<Float32Array[]>;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/** What each piece of a component's search document says about it. */
|
|
21
|
+
export type FieldType = 'name' | 'purpose' | 'signal' | 'useWhen' | 'scenario' | 'action' | 'state' | 'event' | 'data';
|
|
22
|
+
|
|
23
|
+
/** A component, as search sees it: what problem it solves (positive) and what it is not for (negative). Built from its capability — nothing is written for search alone. */
|
|
24
|
+
export type SearchDocument = {
|
|
25
|
+
component: string;
|
|
26
|
+
/** Catalogue order: the stable tie-break. */
|
|
27
|
+
order: number;
|
|
28
|
+
positive: { type: FieldType; text: string }[];
|
|
29
|
+
negative: { text: string }[];
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export type SearchWeights = {
|
|
33
|
+
/** How much each kind of field counts when it is the closest to the query (0 leaves it out). */
|
|
34
|
+
fields: Record<FieldType, number>;
|
|
35
|
+
/** The semantic score is the mean of the best `topK` field similarities. */
|
|
36
|
+
topK: number;
|
|
37
|
+
/** How hard a query nearer to what a component is *not* for pushes it down. */
|
|
38
|
+
negative: number;
|
|
39
|
+
/** Before comparing: subtract the catalogue's mean vector (`mean`), and also its first principal component (`pc`) — what every document shares. */
|
|
40
|
+
centre: 'none' | 'mean' | 'pc';
|
|
41
|
+
semantic: number;
|
|
42
|
+
lexical: number;
|
|
43
|
+
/** The lexical score saturates: `s / (s + lexicalHalf)`. */
|
|
44
|
+
lexicalHalf: number;
|
|
45
|
+
/** Below this final score a component is not a candidate. */
|
|
46
|
+
minScore: number;
|
|
47
|
+
/** …nor if it scores below this share of the best one. */
|
|
48
|
+
relative: number;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
export type ScoreBreakdown = {
|
|
52
|
+
component: string;
|
|
53
|
+
semantic: number | null;
|
|
54
|
+
negative: number | null;
|
|
55
|
+
lexical: number;
|
|
56
|
+
/** 1 when the component passes the request's filters (kinds), else 0. */
|
|
57
|
+
metadata: number;
|
|
58
|
+
/** 1 when the host may use it, else 0. */
|
|
59
|
+
availability: number;
|
|
60
|
+
final: number;
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
export type SearchOptions = {
|
|
64
|
+
/** Host policy: only these components may be offered. Absent → every approved component. */
|
|
65
|
+
available?: readonly string[];
|
|
66
|
+
/** Only components of these kinds. */
|
|
67
|
+
kinds?: readonly string[];
|
|
68
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { SearchWeights } from './types';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* **The ranking weights — measured, not guessed.** Chosen on the dev half of the evaluation set
|
|
5
|
+
* (`tests/agent/search-eval.ts`) with `tools/search/tune.ts` and a threshold sweep; the test half is
|
|
6
|
+
* reported, never tuned on. The record of why is in docs/DECISIONS.md §19.
|
|
7
|
+
*
|
|
8
|
+
* - Every document field counts; the ones about what a person does with the component (actions,
|
|
9
|
+
* states, events, data) a little less than what it is for.
|
|
10
|
+
* - The semantic score is the mean of the three closest fields, after removing the catalogue mean.
|
|
11
|
+
* - A query closer to a component's `avoidWhen` than to anything it is for is pushed down by half
|
|
12
|
+
* the difference.
|
|
13
|
+
* - Lexical matching adds up to 0.3 — a confident phrase or name match keeps its place; a shared
|
|
14
|
+
* word alone cannot outvote meaning.
|
|
15
|
+
* - A candidate needs 0.3, and 60% of the best — so an ambiguous request keeps its alternatives and
|
|
16
|
+
* a clear one does not trail five weak ones. (Off-topic and on-topic scores overlap; 0.3 rejects
|
|
17
|
+
* about half the off-topic requests without losing on-topic ones.)
|
|
18
|
+
*
|
|
19
|
+
* Measured and not adopted: word-level alignment, reciprocal rank fusion, hubness (CSLS) correction
|
|
20
|
+
* and principal-component removal — none beat this on the development data.
|
|
21
|
+
*/
|
|
22
|
+
export const DEFAULT_WEIGHTS: SearchWeights = {
|
|
23
|
+
fields: { name: 1, purpose: 1, signal: 1, useWhen: 1, scenario: 1, action: 0.8, state: 0.8, event: 0.8, data: 0.8 },
|
|
24
|
+
topK: 3,
|
|
25
|
+
negative: 0.5,
|
|
26
|
+
centre: 'mean',
|
|
27
|
+
semantic: 1,
|
|
28
|
+
lexical: 0.3,
|
|
29
|
+
lexicalHalf: 6,
|
|
30
|
+
minScore: 0.3,
|
|
31
|
+
relative: 0.6,
|
|
32
|
+
};
|
package/src/agent/types.ts
CHANGED
|
@@ -45,7 +45,7 @@ type Base = {
|
|
|
45
45
|
};
|
|
46
46
|
|
|
47
47
|
export type FieldSpec =
|
|
48
|
-
| Base & { type: 'text'; maxLength?: number; minLength?: number; pattern?: string; patternHint?: string; format?: 'date'; enum?: readonly string[]; unique?: boolean }
|
|
48
|
+
| Base & { type: 'text'; maxLength?: number; minLength?: number; pattern?: string; patternHint?: string; format?: 'date' | 'color'; enum?: readonly string[]; unique?: boolean }
|
|
49
49
|
| Base & { type: 'number'; integer?: boolean; min?: number; max?: number; exclusiveMin?: number }
|
|
50
50
|
| Base & { type: 'boolean' }
|
|
51
51
|
| Base & { type: 'list'; item: FieldSpec; minItems?: number; maxItems?: number }
|
|
@@ -40,7 +40,9 @@ export type ComponentFamily =
|
|
|
40
40
|
| 'combobox' | 'tabbed' | 'fallback'
|
|
41
41
|
| 'budget-tracker' | 'ab-tests' | 'conversion-funnel'
|
|
42
42
|
| 'expandable-feed' | 'score-summary' | 'criteria-spider' | 'activity-heatmap' | 'tag-cloud'
|
|
43
|
-
| 'receipt-printer'
|
|
43
|
+
| 'receipt-printer'
|
|
44
|
+
| 'animated-status'
|
|
45
|
+
| 'send-completion';
|
|
44
46
|
|
|
45
47
|
/**
|
|
46
48
|
* **A set of families shipped and shown together.** The seven onboarding components (2026-09-24)
|
|
@@ -573,6 +575,24 @@ export const COMPONENT_CATALOGUE: ComponentCatalogueEntry[] = [
|
|
|
573
575
|
playground: { slug: 'new/receipt-printer' },
|
|
574
576
|
note: 'The first New component animated with Rive. The printer and the paper are a Rive file authored as RML with the Rive CLI (rive/receipt-printer/receipt-printer.rml, reference ~/Downloads/printerPDF.pdf) and shipped as base64 (riv.ts, `npm run rive:receipt-printer`); React owns the form, the checks, the print operation and the lifecycle, and talks to Rive only through the `Receipt` view model (ten strings, print/reset/reveal triggers, a status the machine writes). Web: @rive-app/react-canvas. Native: the same receipt as a still. Built to docs/COMPONENT-RULES.md.',
|
|
575
577
|
},
|
|
578
|
+
{
|
|
579
|
+
type: 'animated-status', label: 'Animated Status', status: 'implemented', driver: 'configuration-driven', introduced: '2026-09-29', group: 'new', caseStudies: 5,
|
|
580
|
+
blurb: 'A six-scene animated message in a fixed motion design — give it the words, two colours and an icon; the motion never changes.',
|
|
581
|
+
fixtureDir: 'onboarding/animated-status',
|
|
582
|
+
storyId: 'Components/Onboarding/Animated Status',
|
|
583
|
+
resource: { slug: 'new/animated-status', defaultFixture: 'case1' },
|
|
584
|
+
playground: { slug: 'new/animated-status' },
|
|
585
|
+
note: 'Rebuilt from a reference GIF (720×1280, 271 frames at 24 fps) as one Rive file authored as RML with the Rive CLI (rive/animated-status, generated by authoring/generate-rml.mjs) and shipped as base64 (riv.ts, `npm run rive:animated-status`). The config holds only the words (six slots with fixed word limits), textColor, accentColor and emblemIcon; timing, layout and typography have no key, and every text box in the file is fixed and shrinks its type, so no word moves anything. `done` means the animation finished, not the task. Web: @rive-app/react-canvas. Native: a still. Standalone prototype: rive-prototype/. Built to docs/COMPONENT-RULES.md.',
|
|
586
|
+
},
|
|
587
|
+
{
|
|
588
|
+
type: 'send-completion', label: 'Send Completion', status: 'implemented', driver: 'configuration-driven', introduced: '2026-09-29', group: 'new', caseStudies: 5,
|
|
589
|
+
blurb: 'A send button that launches its icon, balls up into a check and says “Sent!” — once the send has really succeeded.',
|
|
590
|
+
fixtureDir: 'onboarding/send-completion',
|
|
591
|
+
storyId: 'Components/Onboarding/Send Completion',
|
|
592
|
+
resource: { slug: 'new/send-completion', defaultFixture: 'case1' },
|
|
593
|
+
playground: { slug: 'new/send-completion' },
|
|
594
|
+
note: 'Rebuilt natively in Rive from a reference GIF (720×540, 120 frames at 24 fps): one master timeline of measured keys cut into a state machine (tap cue → press → launch → wait → transform → sent), authored as RML (rive/send-completion, generated by authoring/generate-rml.mjs) and shipped as base64 (riv.ts, `npm run rive:send-completion`). The plane rides a path (FollowPathConstraint) with a trimmed trail; the button morphs by keyed size and a data-driven corner radius. The config holds the words, six colours, the icon, its scale, the corner radius, the width and the behaviour; the press runs the host `send` operation and the check waits for it. Web: @rive-app/react-canvas. Native: a still. Built to docs/COMPONENT-RULES.md.',
|
|
595
|
+
},
|
|
576
596
|
];
|
|
577
597
|
|
|
578
598
|
/** The most recent `introduced` date among these — what "New" means on the site. */
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { useEffect } from 'react';
|
|
2
|
+
import { AnimatedStill } from './AnimatedStill';
|
|
3
|
+
import type { AnimatedStageProps } from './AnimatedStage.types';
|
|
4
|
+
|
|
5
|
+
export type { AnimatedStageProps };
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* **The native half: a still.** The Rive runtime this component plays on the web
|
|
9
|
+
* (`@rive-app/react-canvas`) is a browser runtime, so it is never imported here. Play lands on
|
|
10
|
+
* `done` at once; reset returns to `idle`.
|
|
11
|
+
*/
|
|
12
|
+
export function AnimatedStage({ command, onStatus, ...still }: AnimatedStageProps) {
|
|
13
|
+
useEffect(() => {
|
|
14
|
+
if (!command) return;
|
|
15
|
+
onStatus(command.kind === 'reset' ? 'idle' : 'done');
|
|
16
|
+
}, [command?.n]);
|
|
17
|
+
return <AnimatedStill {...still} />;
|
|
18
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { AnimatedStatusStatus } from './contract';
|
|
2
|
+
import type { AnimatedStatusWords } from './engine';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* **The animation — the one boundary between the component and how it is drawn.**
|
|
6
|
+
*
|
|
7
|
+
* The component hands over the words, two colours, an icon and a command, and hears back the
|
|
8
|
+
* playback status. The web half (`AnimatedStage.web.tsx`) plays the Rive file; the native half, and
|
|
9
|
+
* the web half whenever the Rive runtime cannot load, show a still (`AnimatedStill`) and finish at
|
|
10
|
+
* once. Nothing about Rive — artboards, view models, triggers — crosses this line.
|
|
11
|
+
*/
|
|
12
|
+
export type AnimatedStageCommand = { kind: 'play' | 'reset' | 'reveal'; n: number };
|
|
13
|
+
|
|
14
|
+
export type AnimatedStageProps = {
|
|
15
|
+
words: AnimatedStatusWords;
|
|
16
|
+
textColor: string;
|
|
17
|
+
accentColor: string;
|
|
18
|
+
icon: string;
|
|
19
|
+
/** The latest command; a new `n` runs it again. */
|
|
20
|
+
command: AnimatedStageCommand | null;
|
|
21
|
+
/** Playback moved on: `idle`, `playing` or `done`. */
|
|
22
|
+
onStatus: (status: AnimatedStatusStatus) => void;
|
|
23
|
+
/** The animation's accessible name: every word it shows. */
|
|
24
|
+
label: string;
|
|
25
|
+
maxWidth: number;
|
|
26
|
+
testID?: string;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
/** The artboard's 9:16. */
|
|
30
|
+
export const STAGE_ASPECT = 720 / 1280;
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { useEffect, useMemo, useRef, useState } from 'react';
|
|
2
|
+
import { Alignment, Fit, Layout, useRive } from '@rive-app/react-canvas';
|
|
3
|
+
import { Box } from '../../../core';
|
|
4
|
+
import { blockRadii } from '../../../tokens';
|
|
5
|
+
import { ANIMATION_GROUND } from '../../../tokens/stage';
|
|
6
|
+
import type { AnimatedStatusStatus } from './contract';
|
|
7
|
+
import { riveWrites } from './engine';
|
|
8
|
+
import { AnimatedStill } from './AnimatedStill';
|
|
9
|
+
import { ANIMATED_STATUS_RIV } from './riv';
|
|
10
|
+
import { STAGE_ASPECT, type AnimatedStageProps } from './AnimatedStage.types';
|
|
11
|
+
|
|
12
|
+
export type { AnimatedStageProps };
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* **The web half: the Rive animation.**
|
|
16
|
+
*
|
|
17
|
+
* The Rive file (`rive/animated-status/`) owns the artwork, the six scenes and every frame of
|
|
18
|
+
* motion. This owns only the conversation with it, through the `AnimatedStatus` view model: the
|
|
19
|
+
* words, the two colours and the icon index are written whenever they change; `play`, `reset` and
|
|
20
|
+
* `reveal` are triggers; `status` is written by the file's own state machine (`idle` · `playing` ·
|
|
21
|
+
* `done`). No word can move anything: every text box in the file is fixed and shrinks its type.
|
|
22
|
+
*
|
|
23
|
+
* If the runtime or the file cannot load, the stage shows the still and a play finishes at once.
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
const ARTBOARD = 'AnimatedStatus';
|
|
27
|
+
const MACHINE = 'AnimatedStatusMachine';
|
|
28
|
+
|
|
29
|
+
let bytes: Uint8Array | null = null;
|
|
30
|
+
/** The `.riv`, decoded once per page; each stage gets its own copy of the buffer. */
|
|
31
|
+
function rivBuffer(): ArrayBuffer {
|
|
32
|
+
if (!bytes) {
|
|
33
|
+
const bin = atob(ANIMATED_STATUS_RIV);
|
|
34
|
+
bytes = new Uint8Array(bin.length);
|
|
35
|
+
for (let i = 0; i < bin.length; i++) bytes[i] = bin.charCodeAt(i);
|
|
36
|
+
}
|
|
37
|
+
return bytes.slice().buffer;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
type Prop = { value: string | number };
|
|
41
|
+
type Instance = {
|
|
42
|
+
string(p: string): (Prop & { on(cb: () => void): void; off(cb?: () => void): void; value: string }) | null;
|
|
43
|
+
number(p: string): Prop | null;
|
|
44
|
+
color(p: string): Prop | null;
|
|
45
|
+
trigger(p: string): { trigger(): void } | null;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
export function AnimatedStage({ words, textColor, accentColor, icon, command, onStatus, label, maxWidth, testID }: AnimatedStageProps) {
|
|
49
|
+
const [failed, setFailed] = useState(false);
|
|
50
|
+
const params = useMemo(() => ({
|
|
51
|
+
buffer: rivBuffer(),
|
|
52
|
+
artboard: ARTBOARD,
|
|
53
|
+
stateMachines: MACHINE,
|
|
54
|
+
autoplay: true,
|
|
55
|
+
autoBind: true,
|
|
56
|
+
layout: new Layout({ fit: Fit.Contain, alignment: Alignment.Center }),
|
|
57
|
+
onLoadError: () => setFailed(true),
|
|
58
|
+
}), []);
|
|
59
|
+
const { rive, RiveComponent } = useRive(params);
|
|
60
|
+
const heard = useRef(onStatus);
|
|
61
|
+
heard.current = onStatus;
|
|
62
|
+
const vm = rive?.viewModelInstance as unknown as Instance | undefined;
|
|
63
|
+
|
|
64
|
+
/* 1 · The words and the look, whenever they change — they never restart playback. */
|
|
65
|
+
useEffect(() => {
|
|
66
|
+
if (!vm) return;
|
|
67
|
+
for (const w of riveWrites(words, textColor, accentColor, icon)) {
|
|
68
|
+
const p = vm[w.kind](w.name);
|
|
69
|
+
if (p && p.value !== w.value) p.value = w.value;
|
|
70
|
+
}
|
|
71
|
+
}, [vm, words, textColor, accentColor, icon]);
|
|
72
|
+
|
|
73
|
+
/* 2 · Commands, as triggers. */
|
|
74
|
+
useEffect(() => {
|
|
75
|
+
if (!vm || !command) return;
|
|
76
|
+
vm.trigger(command.kind)?.trigger();
|
|
77
|
+
rive?.play();
|
|
78
|
+
}, [vm, command?.n]);
|
|
79
|
+
|
|
80
|
+
/* 3 · The file says where playback is. */
|
|
81
|
+
useEffect(() => {
|
|
82
|
+
const status = vm?.string('status');
|
|
83
|
+
if (!status) return;
|
|
84
|
+
const report = () => heard.current(status.value as AnimatedStatusStatus);
|
|
85
|
+
status.on(report);
|
|
86
|
+
return () => status.off(report);
|
|
87
|
+
}, [vm]);
|
|
88
|
+
|
|
89
|
+
/* Without the runtime, a command settles at once, exactly as on native. */
|
|
90
|
+
useEffect(() => { if (failed && command) heard.current(command.kind === 'reset' ? 'idle' : 'done'); }, [failed, command?.n]);
|
|
91
|
+
|
|
92
|
+
if (failed) return <AnimatedStill words={words} textColor={textColor} accentColor={accentColor} label={label} maxWidth={maxWidth} testID={testID} />;
|
|
93
|
+
return (
|
|
94
|
+
/* `data-rive` says whether the artboard has painted — a screenshot (the visual gate) waits for `ready`. */
|
|
95
|
+
<Box testID={testID} role="img" aria-label={label} style={{ width: '100%', maxWidth, aspectRatio: STAGE_ASPECT, borderRadius: blockRadii.mid, overflow: 'hidden', backgroundColor: ANIMATION_GROUND }}>
|
|
96
|
+
<RiveComponent aria-hidden="true" data-rive={rive ? 'ready' : 'loading'} style={{ width: '100%', height: '100%', display: 'block' }} />
|
|
97
|
+
</Box>
|
|
98
|
+
);
|
|
99
|
+
}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { useEffect, useMemo, useRef, useState, type ComponentType } from 'react';
|
|
2
|
+
import { Box, useReduceMotion } from '../../../core';
|
|
3
|
+
import type { DensityName } from '../../../tokens';
|
|
4
|
+
import { fill, resolveConfig, type OnboardingPreset, type PatternStatus } from '../shared/contract';
|
|
5
|
+
import type { OnboardingOperation } from '../shared/mock';
|
|
6
|
+
import { InvalidConfig } from '../shared/InvalidConfig';
|
|
7
|
+
import { OnboardingCard } from '../shared/OnboardingCard';
|
|
8
|
+
import { usePatternStatus, useSceneReport } from '../shared/runtime';
|
|
9
|
+
import { guarded } from '../shared/guard';
|
|
10
|
+
import { ANIMATED_STATUS_PRESETS, ANIMATED_STATUS_SECONDS, validateAnimatedStatus, type AnimatedStatusSettings, type AnimatedStatusStatus } from './contract';
|
|
11
|
+
import { spokenText, wordsOf, type AnimatedStatusSeed } from './engine';
|
|
12
|
+
import { AnimatedStage } from './AnimatedStage';
|
|
13
|
+
import type { AnimatedStageCommand, AnimatedStageProps } from './AnimatedStage.types';
|
|
14
|
+
|
|
15
|
+
export type AnimatedStatusProps = {
|
|
16
|
+
preset?: OnboardingPreset;
|
|
17
|
+
config?: Partial<AnimatedStatusSettings>;
|
|
18
|
+
density?: DensityName;
|
|
19
|
+
status?: PatternStatus;
|
|
20
|
+
reload?: OnboardingOperation<void>;
|
|
21
|
+
/** A demo scene's starting point — see `animatedStatusSeed`. */
|
|
22
|
+
initial?: AnimatedStatusSeed;
|
|
23
|
+
/** What draws the animation. Default: Rive on the web, a still on native. */
|
|
24
|
+
stage?: ComponentType<AnimatedStageProps>;
|
|
25
|
+
/** Playback moved on. `done` means the animation finished — not that the task it describes did. */
|
|
26
|
+
onStatusChange?: (status: AnimatedStatusStatus) => void;
|
|
27
|
+
/** Play (or Replay) was pressed. */
|
|
28
|
+
onPlay?: () => void;
|
|
29
|
+
/** Reset was pressed. */
|
|
30
|
+
onReset?: () => void;
|
|
31
|
+
onScene?: (scene: string) => void;
|
|
32
|
+
testID?: string;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* **Animated Status** — the animation on a card: the header, the 9:16 stage, a status chip
|
|
37
|
+
* (Ready · Playing · Played), Play / Replay and Reset. With reduced motion, Play shows the last
|
|
38
|
+
* frame at once.
|
|
39
|
+
*/
|
|
40
|
+
function AnimatedStatusView(props: AnimatedStatusProps) {
|
|
41
|
+
const config = resolveConfig(ANIMATED_STATUS_PRESETS, props.preset, props.config);
|
|
42
|
+
const issues = validateAnimatedStatus(config);
|
|
43
|
+
if (issues.length) return <InvalidConfig title={config.title} issues={issues} testID={props.testID} />;
|
|
44
|
+
return <Valid {...props} config={config} />;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function Valid({ config, density, status, reload, initial, stage: Stage = AnimatedStage, onStatusChange, onPlay, onReset, onScene, testID }: Omit<AnimatedStatusProps, 'config'> & { config: AnimatedStatusSettings }) {
|
|
48
|
+
const pattern = usePatternStatus(status ?? 'ready', reload);
|
|
49
|
+
const reduceMotion = useReduceMotion();
|
|
50
|
+
const words = useMemo(() => wordsOf(config), [config.scene1Text, config.scene2Text, config.scene3Text, config.scene4Text, config.scene5Text, config.scene6Text]);
|
|
51
|
+
const [playback, setPlayback] = useState<AnimatedStatusStatus>('idle');
|
|
52
|
+
const [command, setCommand] = useState<AnimatedStageCommand | null>(null);
|
|
53
|
+
const n = useRef(0);
|
|
54
|
+
const run = (kind: AnimatedStageCommand['kind']) => setCommand({ kind, n: ++n.current });
|
|
55
|
+
|
|
56
|
+
/* A scene's seed, or autoplay, starts playback once the card shows. */
|
|
57
|
+
const seeded = initial?.status ?? (config.autoplay ? 'playing' : 'idle');
|
|
58
|
+
useEffect(() => {
|
|
59
|
+
if (seeded === 'playing') run(reduceMotion ? 'reveal' : 'play');
|
|
60
|
+
else if (seeded === 'done') run('reveal');
|
|
61
|
+
}, [seeded]);
|
|
62
|
+
|
|
63
|
+
const changed = useRef(onStatusChange);
|
|
64
|
+
changed.current = onStatusChange;
|
|
65
|
+
const last = useRef<AnimatedStatusStatus>('idle');
|
|
66
|
+
const heard = (s: AnimatedStatusStatus) => {
|
|
67
|
+
if (last.current === s) return;
|
|
68
|
+
last.current = s;
|
|
69
|
+
setPlayback(s);
|
|
70
|
+
changed.current?.(s);
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
useSceneReport(pattern.status === 'ready' ? (playback === 'idle' ? 'default' : playback) : pattern.status, onScene);
|
|
74
|
+
|
|
75
|
+
const chip = playback === 'playing'
|
|
76
|
+
? { tone: 'attention' as const, label: config.playingLabel, dot: true }
|
|
77
|
+
: playback === 'done' ? { tone: 'success' as const, label: config.doneLabel } : { tone: 'neutral' as const, label: config.idleLabel };
|
|
78
|
+
return (
|
|
79
|
+
<OnboardingCard
|
|
80
|
+
testID={testID}
|
|
81
|
+
header={config}
|
|
82
|
+
copy={config}
|
|
83
|
+
density={density}
|
|
84
|
+
status={pattern.status}
|
|
85
|
+
onRetry={pattern.retry}
|
|
86
|
+
onEmptyAction={pattern.retry}
|
|
87
|
+
chip={chip}
|
|
88
|
+
hint={fill(config.hintText, { seconds: ANIMATED_STATUS_SECONDS })}
|
|
89
|
+
secondary={playback !== 'idle' ? { label: config.resetLabel, onPress: () => { onReset?.(); run('reset'); } } : undefined}
|
|
90
|
+
primary={{ label: playback === 'idle' ? config.playLabel : config.replayLabel, onPress: () => { onPlay?.(); run(reduceMotion ? 'reveal' : 'play'); } }}>
|
|
91
|
+
<Box align="center">
|
|
92
|
+
<Stage
|
|
93
|
+
words={words}
|
|
94
|
+
textColor={config.textColor}
|
|
95
|
+
accentColor={config.accentColor}
|
|
96
|
+
icon={config.emblemIcon}
|
|
97
|
+
command={command}
|
|
98
|
+
onStatus={heard}
|
|
99
|
+
label={spokenText(words)}
|
|
100
|
+
maxWidth={300}
|
|
101
|
+
testID={testID ? `${testID}-stage` : undefined}
|
|
102
|
+
/>
|
|
103
|
+
</Box>
|
|
104
|
+
</OnboardingCard>
|
|
105
|
+
);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/** Animated Status, guarded: a wrong-kind config is refused by name and a render error is caught (`shared/guard`). */
|
|
109
|
+
export const AnimatedStatus = guarded(AnimatedStatusView, ANIMATED_STATUS_PRESETS, 'AnimatedStatus');
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Box, Text } from '../../../core';
|
|
2
|
+
import { blockRadii } from '../../../tokens';
|
|
3
|
+
import { ANIMATION_GROUND } from '../../../tokens/stage';
|
|
4
|
+
import { cssColor } from './engine';
|
|
5
|
+
import { STAGE_ASPECT, type AnimatedStageProps } from './AnimatedStage.types';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* **The animation as a still** — native, and the web when the Rive runtime cannot load: the opening
|
|
9
|
+
* word and the call to action on the white ground, the sign-off on an accent rule. Same words and
|
|
10
|
+
* colours; no motion.
|
|
11
|
+
*/
|
|
12
|
+
export function AnimatedStill({ words, textColor, accentColor, label, maxWidth, testID }: Pick<AnimatedStageProps, 'words' | 'textColor' | 'accentColor' | 'label' | 'maxWidth' | 'testID'>) {
|
|
13
|
+
const ink = cssColor(textColor);
|
|
14
|
+
return (
|
|
15
|
+
<Box testID={testID} role="img" aria-label={label}
|
|
16
|
+
style={{ width: '100%', maxWidth, aspectRatio: STAGE_ASPECT, borderRadius: blockRadii.mid, overflow: 'hidden', backgroundColor: ANIMATION_GROUND, alignItems: 'center', justifyContent: 'center', gap: 18, padding: 16 }}>
|
|
17
|
+
<Text numberOfLines={1} style={{ fontSize: 44, fontWeight: '800', color: ink }}>{words.scene1Text}</Text>
|
|
18
|
+
<Text numberOfLines={1} style={{ fontSize: 18, fontWeight: '700', color: ink }}>{words.scene5Text}</Text>
|
|
19
|
+
<Box style={{ width: 96, height: 3, backgroundColor: cssColor(accentColor) }} />
|
|
20
|
+
<Text numberOfLines={1} style={{ fontSize: 11, color: ink, opacity: 0.7 }}>{words.scene6Text}</Text>
|
|
21
|
+
</Box>
|
|
22
|
+
);
|
|
23
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import type { HeaderConfig, LoadCopy, OnboardingIssue, PresetsFile } from '../shared/contract';
|
|
2
|
+
import { COLOR_TOKENS, parseColor } from '../shared/configColor';
|
|
3
|
+
import presetsJson from './presets.json';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* **Animated Status** — a short animated message in a fixed motion design (Rive,
|
|
7
|
+
* `rive/animated-status/`): six scenes, from an opening word a square bounces across to a dark end
|
|
8
|
+
* card with an icon. The config gives the words, two colours and the icon; the motion, layout,
|
|
9
|
+
* typography and timing are the component's and have no key.
|
|
10
|
+
*
|
|
11
|
+
* Every word slot has its own word limit, part of the design: over it, the config is refused with
|
|
12
|
+
* the reason — never cut short. A longer word shrinks inside its fixed box in the animation, so no
|
|
13
|
+
* text can move anything. `done` means the animation finished playing — not that the task the
|
|
14
|
+
* words describe is done; the host owns that.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
export const ANIMATED_STATUS_SCENES = ['default', 'playing', 'done', 'loading', 'empty', 'error'] as const;
|
|
18
|
+
export type AnimatedStatusScene = (typeof ANIMATED_STATUS_SCENES)[number];
|
|
19
|
+
export const ANIMATED_STATUS_IN_FLIGHT: readonly string[] = [];
|
|
20
|
+
|
|
21
|
+
/** The emblem's icons, in the order the Rive file holds their artwork. */
|
|
22
|
+
export const ANIMATED_STATUS_ICONS = ['search', 'location', 'document', 'calendar', 'check', 'sparkles', 'loader', 'warning'] as const;
|
|
23
|
+
export type AnimatedStatusIcon = (typeof ANIMATED_STATUS_ICONS)[number];
|
|
24
|
+
|
|
25
|
+
export type AnimatedStatusSlot = 'scene1Text' | 'scene2Text' | 'scene3Text' | 'scene4Text' | 'scene5Text' | 'scene6Text';
|
|
26
|
+
/** Each slot's limits: words `[min, max]`, characters, and characters per word. */
|
|
27
|
+
export const ANIMATED_STATUS_SLOTS: Record<AnimatedStatusSlot, { words: [number, number]; maxChars: number; maxWordChars?: number; shows: string }> = {
|
|
28
|
+
scene1Text: { words: [1, 1], maxChars: 12, shows: 'the opening word; a square bounces across it and fills it in' },
|
|
29
|
+
scene2Text: { words: [1, 1], maxChars: 12, shows: 'one word, stacked up the screen five times' },
|
|
30
|
+
scene3Text: { words: [6, 6], maxChars: 44, maxWordChars: 11, shows: 'six words, one per line, each larger; the fifth is emphasised' },
|
|
31
|
+
scene4Text: { words: [3, 3], maxChars: 20, maxWordChars: 6, shows: 'three words as hard cuts; a full stop follows the third' },
|
|
32
|
+
scene5Text: { words: [1, 3], maxChars: 22, shows: 'the call to action' },
|
|
33
|
+
scene6Text: { words: [1, 3], maxChars: 36, shows: 'the sign-off on the dark end card' },
|
|
34
|
+
};
|
|
35
|
+
export const ANIMATED_STATUS_SLOT_KEYS = Object.keys(ANIMATED_STATUS_SLOTS) as AnimatedStatusSlot[];
|
|
36
|
+
|
|
37
|
+
export type AnimatedStatusStatus = 'idle' | 'playing' | 'done';
|
|
38
|
+
|
|
39
|
+
/** Every word the card shows around the animation. */
|
|
40
|
+
export type AnimatedStatusCopy = {
|
|
41
|
+
playLabel: string;
|
|
42
|
+
replayLabel: string;
|
|
43
|
+
resetLabel: string;
|
|
44
|
+
/** The status chip: before, during and after playback. */
|
|
45
|
+
idleLabel: string;
|
|
46
|
+
playingLabel: string;
|
|
47
|
+
doneLabel: string;
|
|
48
|
+
/** Under the animation: "Plays once · {seconds} s". */
|
|
49
|
+
hintText: string;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
export type AnimatedStatusSettings = HeaderConfig & LoadCopy & AnimatedStatusCopy & Record<AnimatedStatusSlot, string> & {
|
|
53
|
+
/** Colour of every word on the white scenes, the square and the dots. Hex, rgb(), rgba() or a hue token. */
|
|
54
|
+
textColor: string;
|
|
55
|
+
/** Colour of the end card: the emblem, the rule and the glow. */
|
|
56
|
+
accentColor: string;
|
|
57
|
+
/** The emblem's icon — one of `ANIMATED_STATUS_ICONS`. */
|
|
58
|
+
emblemIcon: string;
|
|
59
|
+
/** Play as soon as it shows. Default false: the card waits for Play. */
|
|
60
|
+
autoplay?: boolean;
|
|
61
|
+
ship?: string;
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
export const ANIMATED_STATUS_PRESETS = presetsJson as unknown as PresetsFile<AnimatedStatusSettings>;
|
|
65
|
+
/** How long one playthrough takes: 271 frames at 24 fps. */
|
|
66
|
+
export const ANIMATED_STATUS_SECONDS = 11.3;
|
|
67
|
+
|
|
68
|
+
/* Colours are content here: see `shared/configColor`. */
|
|
69
|
+
export { COLOR_TOKENS, parseColor, type Rgba } from '../shared/configColor';
|
|
70
|
+
|
|
71
|
+
/* ─── validation ──────────────────────────────────────────────────────────────────────────── */
|
|
72
|
+
|
|
73
|
+
const words = (s: string) => s.trim().split(/\s+/).filter(Boolean);
|
|
74
|
+
const plural = (n: number, one: string) => `${n} ${one}${n === 1 ? '' : 's'}`;
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* The config's problems, each with its field. Text over a limit is refused and says which limit;
|
|
78
|
+
* it is never shortened. Never throws, whatever it is given.
|
|
79
|
+
*/
|
|
80
|
+
export function validateAnimatedStatus(c: AnimatedStatusSettings): OnboardingIssue[] {
|
|
81
|
+
const issues: OnboardingIssue[] = [];
|
|
82
|
+
for (const key of ANIMATED_STATUS_SLOT_KEYS) {
|
|
83
|
+
const rule = ANIMATED_STATUS_SLOTS[key];
|
|
84
|
+
const text = c?.[key];
|
|
85
|
+
if (typeof text !== 'string' || !text.trim()) { issues.push({ path: key, message: `${key} needs text: ${rule.shows}.` }); continue; }
|
|
86
|
+
if ([...text].some(ch => ch.charCodeAt(0) < 32 || ch.charCodeAt(0) === 127)) { issues.push({ path: key, message: `${key} is one line of plain text.` }); continue; }
|
|
87
|
+
const ws = words(text);
|
|
88
|
+
const [min, max] = rule.words;
|
|
89
|
+
const exact = min === max;
|
|
90
|
+
if (ws.length > max) issues.push({ path: key, message: `${key} takes ${exact ? 'exactly' : 'at most'} ${plural(max, 'word')} (${rule.shows}); it has ${ws.length}.` });
|
|
91
|
+
else if (ws.length < min) issues.push({ path: key, message: `${key} takes ${exact ? 'exactly' : 'at least'} ${plural(min, 'word')} (${rule.shows}); it has ${ws.length}.` });
|
|
92
|
+
if (text.trim().length > rule.maxChars) issues.push({ path: key, message: `${key} takes at most ${rule.maxChars} characters; it has ${text.trim().length}.` });
|
|
93
|
+
const long = rule.maxWordChars ? ws.filter(w => w.length > rule.maxWordChars!) : [];
|
|
94
|
+
if (long.length) issues.push({ path: key, message: `Each word of ${key} is at most ${rule.maxWordChars} characters: ${long.join(', ')} is too long.` });
|
|
95
|
+
}
|
|
96
|
+
for (const key of ['textColor', 'accentColor'] as const) {
|
|
97
|
+
// eslint-disable-next-line comppack/no-raw-colour -- the message names the colour formats the config may supply
|
|
98
|
+
if (!parseColor(c?.[key])) issues.push({ path: key, message: `${key} is a colour: #RGB, #RRGGBB, #RRGGBBAA, rgb(), rgba() or a hue token (${Object.keys(COLOR_TOKENS).slice(0, 4).join(', ')}…).` });
|
|
99
|
+
}
|
|
100
|
+
if (!(ANIMATED_STATUS_ICONS as readonly string[]).includes(c?.emblemIcon as string)) {
|
|
101
|
+
issues.push({ path: 'emblemIcon', message: `emblemIcon is one of ${ANIMATED_STATUS_ICONS.join(', ')}.` });
|
|
102
|
+
}
|
|
103
|
+
if (c?.autoplay !== undefined && typeof c.autoplay !== 'boolean') issues.push({ path: 'autoplay', message: 'autoplay is yes or no.' });
|
|
104
|
+
return issues;
|
|
105
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ANIMATED_STATUS_ICONS, ANIMATED_STATUS_SLOT_KEYS,
|
|
3
|
+
type AnimatedStatusScene, type AnimatedStatusSettings, type AnimatedStatusStatus,
|
|
4
|
+
} from './contract';
|
|
5
|
+
import { argb } from '../shared/configColor';
|
|
6
|
+
|
|
7
|
+
export { cssColor } from '../shared/configColor';
|
|
8
|
+
|
|
9
|
+
/** A demo scene's starting point: where playback is when the card shows. */
|
|
10
|
+
export type AnimatedStatusSeed = { status: AnimatedStatusStatus };
|
|
11
|
+
|
|
12
|
+
export function animatedStatusSeed(_config: AnimatedStatusSettings, scene: AnimatedStatusScene | string): AnimatedStatusSeed {
|
|
13
|
+
return { status: scene === 'playing' ? 'playing' : scene === 'done' ? 'done' : 'idle' };
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/** The config's words, as the animation shows them. */
|
|
17
|
+
export type AnimatedStatusWords = Record<(typeof ANIMATED_STATUS_SLOT_KEYS)[number], string>;
|
|
18
|
+
export const wordsOf = (c: AnimatedStatusSettings): AnimatedStatusWords =>
|
|
19
|
+
Object.fromEntries(ANIMATED_STATUS_SLOT_KEYS.map(k => [k, c[k].trim().split(/\s+/).join(' ')])) as AnimatedStatusWords;
|
|
20
|
+
|
|
21
|
+
/** Everything the animation says, in order — its accessible name (a canvas has no text of its own). */
|
|
22
|
+
export function spokenText(w: AnimatedStatusWords): string {
|
|
23
|
+
return [w.scene1Text, w.scene2Text, w.scene3Text, `${w.scene4Text}.`, w.scene5Text, w.scene6Text].join(' · ');
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
export type RiveWrite = { kind: 'string' | 'color' | 'number'; name: string; value: string | number };
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* **The words and appearance as the Rive file's view model takes them.** The one place its names
|
|
31
|
+
* appear: scene 3's words go one per line (`scene3Line1–6`), scene 4's one per cut
|
|
32
|
+
* (`scene4Word1–3`), and the icon by its index in the file (`iconIndex`).
|
|
33
|
+
*/
|
|
34
|
+
export function riveWrites(w: AnimatedStatusWords, textColor: string, accentColor: string, icon: string): RiveWrite[] {
|
|
35
|
+
const s3 = w.scene3Text.split(' ');
|
|
36
|
+
const s4 = w.scene4Text.split(' ');
|
|
37
|
+
return [
|
|
38
|
+
{ kind: 'string', name: 'scene1Text', value: w.scene1Text },
|
|
39
|
+
{ kind: 'string', name: 'scene2Text', value: w.scene2Text },
|
|
40
|
+
...s3.map((v, i): RiveWrite => ({ kind: 'string', name: `scene3Line${i + 1}`, value: v })),
|
|
41
|
+
...s4.map((v, i): RiveWrite => ({ kind: 'string', name: `scene4Word${i + 1}`, value: v })),
|
|
42
|
+
{ kind: 'string', name: 'scene5Text', value: w.scene5Text },
|
|
43
|
+
{ kind: 'string', name: 'scene6Text', value: w.scene6Text },
|
|
44
|
+
{ kind: 'color', name: 'textColor', value: argb(textColor) },
|
|
45
|
+
{ kind: 'color', name: 'accentColor', value: argb(accentColor) },
|
|
46
|
+
{ kind: 'number', name: 'iconIndex', value: Math.max(0, (ANIMATED_STATUS_ICONS as readonly string[]).indexOf(icon)) },
|
|
47
|
+
];
|
|
48
|
+
}
|
|
49
|
+
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export {
|
|
2
|
+
ANIMATED_STATUS_ICONS, ANIMATED_STATUS_IN_FLIGHT, ANIMATED_STATUS_PRESETS, ANIMATED_STATUS_SCENES, ANIMATED_STATUS_SECONDS, ANIMATED_STATUS_SLOTS,
|
|
3
|
+
COLOR_TOKENS as ANIMATED_STATUS_COLOR_TOKENS, parseColor as parseAnimatedStatusColor, validateAnimatedStatus,
|
|
4
|
+
type AnimatedStatusIcon, type AnimatedStatusScene, type AnimatedStatusSettings, type AnimatedStatusStatus,
|
|
5
|
+
} from './contract';
|
|
6
|
+
export { animatedStatusSeed, riveWrites as animatedStatusRiveWrites, spokenText as animatedStatusSpokenText, type AnimatedStatusSeed } from './engine';
|
|
7
|
+
export { AnimatedStatus, type AnimatedStatusProps } from './AnimatedStatusView';
|
|
8
|
+
export type { AnimatedStageProps, AnimatedStageCommand } from './AnimatedStage.types';
|