@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.
Files changed (988) hide show
  1. package/dist/cjs/agent/AgentComponent.js +1 -1
  2. package/dist/cjs/agent/AgentComponent.js.map +1 -1
  3. package/dist/cjs/agent/base.js +25 -0
  4. package/dist/cjs/agent/base.js.map +1 -0
  5. package/dist/cjs/agent/catalog.js +0 -32
  6. package/dist/cjs/agent/catalog.js.map +1 -1
  7. package/dist/cjs/agent/core.js +22 -20
  8. package/dist/cjs/agent/core.js.map +1 -1
  9. package/dist/cjs/agent/index.js +6 -5
  10. package/dist/cjs/agent/index.js.map +1 -1
  11. package/dist/cjs/agent/manifests.js +81 -1
  12. package/dist/cjs/agent/manifests.js.map +1 -1
  13. package/dist/cjs/agent/result.js +6 -0
  14. package/dist/cjs/agent/result.js.map +1 -1
  15. package/dist/cjs/agent/search/document.js +50 -0
  16. package/dist/cjs/agent/search/document.js.map +1 -0
  17. package/dist/cjs/agent/search/embedding.js +107 -0
  18. package/dist/cjs/agent/search/embedding.js.map +1 -0
  19. package/dist/cjs/agent/search/index.js +25 -0
  20. package/dist/cjs/agent/search/index.js.map +1 -0
  21. package/dist/cjs/agent/search/lexical.js +28 -0
  22. package/dist/cjs/agent/search/lexical.js.map +1 -0
  23. package/dist/cjs/agent/search/normalize.js +15 -0
  24. package/dist/cjs/agent/search/normalize.js.map +1 -0
  25. package/dist/cjs/agent/search/search.js +123 -0
  26. package/dist/cjs/agent/search/search.js.map +1 -0
  27. package/dist/cjs/agent/search/searchIndex.js +120 -0
  28. package/dist/cjs/agent/search/searchIndex.js.map +1 -0
  29. package/dist/cjs/agent/search/types.js +8 -0
  30. package/dist/cjs/agent/search/types.js.map +1 -0
  31. package/dist/cjs/agent/search/weights.js +34 -0
  32. package/dist/cjs/agent/search/weights.js.map +1 -0
  33. package/dist/cjs/agent/search/wordvectors.json +1 -0
  34. package/dist/cjs/components/catalog.js +18 -0
  35. package/dist/cjs/components/catalog.js.map +1 -1
  36. package/dist/cjs/components/onboarding/animated-status/AnimatedStage.js +21 -0
  37. package/dist/cjs/components/onboarding/animated-status/AnimatedStage.js.map +1 -0
  38. package/dist/cjs/components/onboarding/animated-status/AnimatedStage.types.js +6 -0
  39. package/dist/cjs/components/onboarding/animated-status/AnimatedStage.types.js.map +1 -0
  40. package/dist/cjs/components/onboarding/animated-status/AnimatedStage.web.js +89 -0
  41. package/dist/cjs/components/onboarding/animated-status/AnimatedStage.web.js.map +1 -0
  42. package/dist/cjs/components/onboarding/animated-status/AnimatedStatusView.js +62 -0
  43. package/dist/cjs/components/onboarding/animated-status/AnimatedStatusView.js.map +1 -0
  44. package/dist/cjs/components/onboarding/animated-status/AnimatedStill.js +20 -0
  45. package/dist/cjs/components/onboarding/animated-status/AnimatedStill.js.map +1 -0
  46. package/dist/cjs/components/onboarding/animated-status/contract.js +87 -0
  47. package/dist/cjs/components/onboarding/animated-status/contract.js.map +1 -0
  48. package/dist/cjs/components/onboarding/animated-status/engine.js +40 -0
  49. package/dist/cjs/components/onboarding/animated-status/engine.js.map +1 -0
  50. package/dist/cjs/components/onboarding/animated-status/index.js +20 -0
  51. package/dist/cjs/components/onboarding/animated-status/index.js.map +1 -0
  52. package/dist/cjs/components/onboarding/animated-status/presets.json +126 -0
  53. package/dist/cjs/components/onboarding/animated-status/riv.js +7 -0
  54. package/dist/cjs/components/onboarding/animated-status/riv.js.map +1 -0
  55. package/dist/cjs/components/onboarding/index.js +4 -0
  56. package/dist/cjs/components/onboarding/index.js.map +1 -1
  57. package/dist/cjs/components/onboarding/presets.js +90 -84
  58. package/dist/cjs/components/onboarding/presets.js.map +1 -1
  59. package/dist/cjs/components/onboarding/receipt-printer/ReceiptStage.js +43 -6
  60. package/dist/cjs/components/onboarding/receipt-printer/ReceiptStage.js.map +1 -1
  61. package/dist/cjs/components/onboarding/send-completion/SendCompletionView.js +111 -0
  62. package/dist/cjs/components/onboarding/send-completion/SendCompletionView.js.map +1 -0
  63. package/dist/cjs/components/onboarding/send-completion/SendStage.js +37 -0
  64. package/dist/cjs/components/onboarding/send-completion/SendStage.js.map +1 -0
  65. package/dist/cjs/components/onboarding/send-completion/SendStage.types.js +6 -0
  66. package/dist/cjs/components/onboarding/send-completion/SendStage.types.js.map +1 -0
  67. package/dist/cjs/components/onboarding/send-completion/SendStage.web.js +107 -0
  68. package/dist/cjs/components/onboarding/send-completion/SendStage.web.js.map +1 -0
  69. package/dist/cjs/components/onboarding/send-completion/SendStill.js +17 -0
  70. package/dist/cjs/components/onboarding/send-completion/SendStill.js.map +1 -0
  71. package/dist/cjs/components/onboarding/send-completion/contract.js +83 -0
  72. package/dist/cjs/components/onboarding/send-completion/contract.js.map +1 -0
  73. package/dist/cjs/components/onboarding/send-completion/engine.js +32 -0
  74. package/dist/cjs/components/onboarding/send-completion/engine.js.map +1 -0
  75. package/dist/cjs/components/onboarding/send-completion/index.js +22 -0
  76. package/dist/cjs/components/onboarding/send-completion/index.js.map +1 -0
  77. package/dist/cjs/components/onboarding/send-completion/presets.json +132 -0
  78. package/dist/cjs/components/onboarding/send-completion/riv.js +7 -0
  79. package/dist/cjs/components/onboarding/send-completion/riv.js.map +1 -0
  80. package/dist/cjs/components/onboarding/shared/actions-data.js +2 -0
  81. package/dist/cjs/components/onboarding/shared/actions-data.js.map +1 -1
  82. package/dist/cjs/components/onboarding/shared/configColor.js +76 -0
  83. package/dist/cjs/components/onboarding/shared/configColor.js.map +1 -0
  84. package/dist/cjs/components/onboarding/shared/contract.js +4 -0
  85. package/dist/cjs/components/onboarding/shared/contract.js.map +1 -1
  86. package/dist/cjs/components/onboarding/shared/describe.js +1 -1
  87. package/dist/cjs/components/onboarding/shared/describe.js.map +1 -1
  88. package/dist/cjs/components/onboarding/shared/mock.js +2 -0
  89. package/dist/cjs/components/onboarding/shared/mock.js.map +1 -1
  90. package/dist/cjs/components/onboarding/views.js +8 -0
  91. package/dist/cjs/components/onboarding/views.js.map +1 -1
  92. package/dist/cjs/index.js +1 -1
  93. package/dist/cjs/index.js.map +1 -1
  94. package/dist/cjs/motion/MotionPlayer.js +42 -0
  95. package/dist/cjs/motion/MotionPlayer.js.map +1 -0
  96. package/dist/cjs/motion/agent.js +323 -0
  97. package/dist/cjs/motion/agent.js.map +1 -0
  98. package/dist/cjs/motion/cat/Cat.js +79 -0
  99. package/dist/cjs/motion/cat/Cat.js.map +1 -0
  100. package/dist/cjs/motion/cat/animation.js +204 -0
  101. package/dist/cjs/motion/cat/animation.js.map +1 -0
  102. package/dist/cjs/motion/cat/art.generated.js +37 -0
  103. package/dist/cjs/motion/cat/art.generated.js.map +1 -0
  104. package/dist/cjs/motion/cat/config.js +136 -0
  105. package/dist/cjs/motion/cat/config.js.map +1 -0
  106. package/dist/cjs/motion/cat/index.js +75 -0
  107. package/dist/cjs/motion/cat/index.js.map +1 -0
  108. package/dist/cjs/motion/cat/rig.js +99 -0
  109. package/dist/cjs/motion/cat/rig.js.map +1 -0
  110. package/dist/cjs/motion/cat/scene.js +148 -0
  111. package/dist/cjs/motion/cat/scene.js.map +1 -0
  112. package/dist/cjs/motion/configurable/config.js +477 -0
  113. package/dist/cjs/motion/configurable/config.js.map +1 -0
  114. package/dist/cjs/motion/configurable/controls.js +44 -0
  115. package/dist/cjs/motion/configurable/controls.js.map +1 -0
  116. package/dist/cjs/motion/easing.js +62 -0
  117. package/dist/cjs/motion/easing.js.map +1 -0
  118. package/dist/cjs/motion/fit.js +12 -0
  119. package/dist/cjs/motion/fit.js.map +1 -0
  120. package/dist/cjs/motion/index.js +101 -0
  121. package/dist/cjs/motion/index.js.map +1 -0
  122. package/dist/cjs/motion/neon/GlowRenderer.js +18 -0
  123. package/dist/cjs/motion/neon/GlowRenderer.js.map +1 -0
  124. package/dist/cjs/motion/neon/NeonCanvas.js +97 -0
  125. package/dist/cjs/motion/neon/NeonCanvas.js.map +1 -0
  126. package/dist/cjs/motion/neon/NeonText.js +108 -0
  127. package/dist/cjs/motion/neon/NeonText.js.map +1 -0
  128. package/dist/cjs/motion/neon/NeonTextFrame.js +36 -0
  129. package/dist/cjs/motion/neon/NeonTextFrame.js.map +1 -0
  130. package/dist/cjs/motion/neon/artwork.js +102 -0
  131. package/dist/cjs/motion/neon/artwork.js.map +1 -0
  132. package/dist/cjs/motion/neon/audio.js +165 -0
  133. package/dist/cjs/motion/neon/audio.js.map +1 -0
  134. package/dist/cjs/motion/neon/config.js +334 -0
  135. package/dist/cjs/motion/neon/config.js.map +1 -0
  136. package/dist/cjs/motion/neon/flicker.js +196 -0
  137. package/dist/cjs/motion/neon/flicker.js.map +1 -0
  138. package/dist/cjs/motion/neon/fonts.js +52 -0
  139. package/dist/cjs/motion/neon/fonts.js.map +1 -0
  140. package/dist/cjs/motion/neon/frame.js +24 -0
  141. package/dist/cjs/motion/neon/frame.js.map +1 -0
  142. package/dist/cjs/motion/neon/glitch.js +114 -0
  143. package/dist/cjs/motion/neon/glitch.js.map +1 -0
  144. package/dist/cjs/motion/neon/index.js +119 -0
  145. package/dist/cjs/motion/neon/index.js.map +1 -0
  146. package/dist/cjs/motion/neon/layers.js +68 -0
  147. package/dist/cjs/motion/neon/layers.js.map +1 -0
  148. package/dist/cjs/motion/neon/material.js +56 -0
  149. package/dist/cjs/motion/neon/material.js.map +1 -0
  150. package/dist/cjs/motion/neon/random.js +43 -0
  151. package/dist/cjs/motion/neon/random.js.map +1 -0
  152. package/dist/cjs/motion/neon/scene.js +549 -0
  153. package/dist/cjs/motion/neon/scene.js.map +1 -0
  154. package/dist/cjs/motion/neon/synth.js +213 -0
  155. package/dist/cjs/motion/neon/synth.js.map +1 -0
  156. package/dist/cjs/motion/neon/typography.js +81 -0
  157. package/dist/cjs/motion/neon/typography.js.map +1 -0
  158. package/dist/cjs/motion/neon/wall.js +113 -0
  159. package/dist/cjs/motion/neon/wall.js.map +1 -0
  160. package/dist/cjs/motion/paperfold/PaperFold.js +40 -0
  161. package/dist/cjs/motion/paperfold/PaperFold.js.map +1 -0
  162. package/dist/cjs/motion/paperfold/PaperFoldFrame.js +290 -0
  163. package/dist/cjs/motion/paperfold/PaperFoldFrame.js.map +1 -0
  164. package/dist/cjs/motion/paperfold/PaperFoldPlayer.js +59 -0
  165. package/dist/cjs/motion/paperfold/PaperFoldPlayer.js.map +1 -0
  166. package/dist/cjs/motion/paperfold/art.js +388 -0
  167. package/dist/cjs/motion/paperfold/art.js.map +1 -0
  168. package/dist/cjs/motion/paperfold/config.js +103 -0
  169. package/dist/cjs/motion/paperfold/config.js.map +1 -0
  170. package/dist/cjs/motion/paperfold/controls.js +493 -0
  171. package/dist/cjs/motion/paperfold/controls.js.map +1 -0
  172. package/dist/cjs/motion/paperfold/engine.js +722 -0
  173. package/dist/cjs/motion/paperfold/engine.js.map +1 -0
  174. package/dist/cjs/motion/paperfold/fonts.js +25 -0
  175. package/dist/cjs/motion/paperfold/fonts.js.map +1 -0
  176. package/dist/cjs/motion/paperfold/index.js +113 -0
  177. package/dist/cjs/motion/paperfold/index.js.map +1 -0
  178. package/dist/cjs/motion/paperfold/manipulate.js +170 -0
  179. package/dist/cjs/motion/paperfold/manipulate.js.map +1 -0
  180. package/dist/cjs/motion/paperfold/presets.js +119 -0
  181. package/dist/cjs/motion/paperfold/presets.js.map +1 -0
  182. package/dist/cjs/motion/paperfold/template.js +40 -0
  183. package/dist/cjs/motion/paperfold/template.js.map +1 -0
  184. package/dist/cjs/motion/player.js +203 -0
  185. package/dist/cjs/motion/player.js.map +1 -0
  186. package/dist/cjs/motion/promo/PromoFrame.js +293 -0
  187. package/dist/cjs/motion/promo/PromoFrame.js.map +1 -0
  188. package/dist/cjs/motion/promo/PromoShowcasePlayer.js +59 -0
  189. package/dist/cjs/motion/promo/PromoShowcasePlayer.js.map +1 -0
  190. package/dist/cjs/motion/promo/config.js +565 -0
  191. package/dist/cjs/motion/promo/config.js.map +1 -0
  192. package/dist/cjs/motion/promo/controls.js +571 -0
  193. package/dist/cjs/motion/promo/controls.js.map +1 -0
  194. package/dist/cjs/motion/promo/easing.js +35 -0
  195. package/dist/cjs/motion/promo/easing.js.map +1 -0
  196. package/dist/cjs/motion/promo/engine.js +567 -0
  197. package/dist/cjs/motion/promo/engine.js.map +1 -0
  198. package/dist/cjs/motion/promo/fonts.js +20 -0
  199. package/dist/cjs/motion/promo/fonts.js.map +1 -0
  200. package/dist/cjs/motion/promo/icons.js +29 -0
  201. package/dist/cjs/motion/promo/icons.js.map +1 -0
  202. package/dist/cjs/motion/promo/index.js +73 -0
  203. package/dist/cjs/motion/promo/index.js.map +1 -0
  204. package/dist/cjs/motion/promo/presets.js +44 -0
  205. package/dist/cjs/motion/promo/presets.js.map +1 -0
  206. package/dist/cjs/motion/promo/template.js +38 -0
  207. package/dist/cjs/motion/promo/template.js.map +1 -0
  208. package/dist/cjs/motion/replication2/Replication2Player.js +93 -0
  209. package/dist/cjs/motion/replication2/Replication2Player.js.map +1 -0
  210. package/dist/cjs/motion/replication2/config.js +352 -0
  211. package/dist/cjs/motion/replication2/config.js.map +1 -0
  212. package/dist/cjs/motion/replication2/controls.js +286 -0
  213. package/dist/cjs/motion/replication2/controls.js.map +1 -0
  214. package/dist/cjs/motion/replication2/driver.js +68 -0
  215. package/dist/cjs/motion/replication2/driver.js.map +1 -0
  216. package/dist/cjs/motion/replication2/easing.js +97 -0
  217. package/dist/cjs/motion/replication2/easing.js.map +1 -0
  218. package/dist/cjs/motion/replication2/engine.js +481 -0
  219. package/dist/cjs/motion/replication2/engine.js.map +1 -0
  220. package/dist/cjs/motion/replication2/html.js +88 -0
  221. package/dist/cjs/motion/replication2/html.js.map +1 -0
  222. package/dist/cjs/motion/replication2/index.js +61 -0
  223. package/dist/cjs/motion/replication2/index.js.map +1 -0
  224. package/dist/cjs/motion/replication2/measure.js +30 -0
  225. package/dist/cjs/motion/replication2/measure.js.map +1 -0
  226. package/dist/cjs/motion/replication2/metrics.js +10 -0
  227. package/dist/cjs/motion/replication2/metrics.js.map +1 -0
  228. package/dist/cjs/motion/replication2/presets.js +67 -0
  229. package/dist/cjs/motion/replication2/presets.js.map +1 -0
  230. package/dist/cjs/motion/replication2/riv.js +7 -0
  231. package/dist/cjs/motion/replication2/riv.js.map +1 -0
  232. package/dist/cjs/motion/replication2/rive-contract.js +158 -0
  233. package/dist/cjs/motion/replication2/rive-contract.js.map +1 -0
  234. package/dist/cjs/motion/replication2/template.js +35 -0
  235. package/dist/cjs/motion/replication2/template.js.map +1 -0
  236. package/dist/cjs/motion/sample.js +149 -0
  237. package/dist/cjs/motion/sample.js.map +1 -0
  238. package/dist/cjs/motion/templates/hey-template.js +1552 -0
  239. package/dist/cjs/motion/templates/hey-template.js.map +1 -0
  240. package/dist/cjs/motion/templates/index.js +22 -0
  241. package/dist/cjs/motion/templates/index.js.map +1 -0
  242. package/dist/cjs/motion/templates/word-motion.js +1165 -0
  243. package/dist/cjs/motion/templates/word-motion.js.map +1 -0
  244. package/dist/cjs/motion/types.js +3 -0
  245. package/dist/cjs/motion/types.js.map +1 -0
  246. package/dist/cjs/motion/typesurface/TypeSurfaceCanvas.js +62 -0
  247. package/dist/cjs/motion/typesurface/TypeSurfaceCanvas.js.map +1 -0
  248. package/dist/cjs/motion/typesurface/art.js +861 -0
  249. package/dist/cjs/motion/typesurface/art.js.map +1 -0
  250. package/dist/cjs/motion/typesurface/config.js +269 -0
  251. package/dist/cjs/motion/typesurface/config.js.map +1 -0
  252. package/dist/cjs/motion/typesurface/engine.js +607 -0
  253. package/dist/cjs/motion/typesurface/engine.js.map +1 -0
  254. package/dist/cjs/motion/typesurface/fonts.js +45 -0
  255. package/dist/cjs/motion/typesurface/fonts.js.map +1 -0
  256. package/dist/cjs/motion/typesurface/index.js +72 -0
  257. package/dist/cjs/motion/typesurface/index.js.map +1 -0
  258. package/dist/cjs/motion/typesurface/layout.js +130 -0
  259. package/dist/cjs/motion/typesurface/layout.js.map +1 -0
  260. package/dist/cjs/motion/typesurface/ops.js +175 -0
  261. package/dist/cjs/motion/typesurface/ops.js.map +1 -0
  262. package/dist/cjs/motion/typesurface/presets.js +192 -0
  263. package/dist/cjs/motion/typesurface/presets.js.map +1 -0
  264. package/dist/cjs/motion/typesurface/renderer.js +672 -0
  265. package/dist/cjs/motion/typesurface/renderer.js.map +1 -0
  266. package/dist/cjs/motion/typesurface/shaders.js +300 -0
  267. package/dist/cjs/motion/typesurface/shaders.js.map +1 -0
  268. package/dist/cjs/motion/typesurface/surfaces.js +156 -0
  269. package/dist/cjs/motion/typesurface/surfaces.js.map +1 -0
  270. package/dist/cjs/motion/typesurface/text.js +34 -0
  271. package/dist/cjs/motion/typesurface/text.js.map +1 -0
  272. package/dist/cjs/motion/typesurface/timeline.js +64 -0
  273. package/dist/cjs/motion/typesurface/timeline.js.map +1 -0
  274. package/dist/cjs/motion/validate.js +89 -0
  275. package/dist/cjs/motion/validate.js.map +1 -0
  276. package/dist/cjs/native/RiveReceiptStage.js +9 -150
  277. package/dist/cjs/native/RiveReceiptStage.js.map +1 -1
  278. package/dist/cjs/native/riveReceiptStageFactory.js +162 -0
  279. package/dist/cjs/native/riveReceiptStageFactory.js.map +1 -0
  280. package/dist/cjs/tokens/stage.js +10 -0
  281. package/dist/cjs/tokens/stage.js.map +1 -0
  282. package/dist/esm/agent/AgentComponent.js +1 -1
  283. package/dist/esm/agent/AgentComponent.js.map +1 -1
  284. package/dist/esm/agent/base.d.ts +11 -0
  285. package/dist/esm/agent/base.d.ts.map +1 -0
  286. package/dist/esm/agent/base.js +11 -0
  287. package/dist/esm/agent/base.js.map +1 -0
  288. package/dist/esm/agent/catalog.d.ts +0 -8
  289. package/dist/esm/agent/catalog.d.ts.map +1 -1
  290. package/dist/esm/agent/catalog.js +0 -31
  291. package/dist/esm/agent/catalog.js.map +1 -1
  292. package/dist/esm/agent/core.d.ts +6 -7
  293. package/dist/esm/agent/core.d.ts.map +1 -1
  294. package/dist/esm/agent/core.js +6 -7
  295. package/dist/esm/agent/core.js.map +1 -1
  296. package/dist/esm/agent/index.d.ts +6 -5
  297. package/dist/esm/agent/index.d.ts.map +1 -1
  298. package/dist/esm/agent/index.js +6 -5
  299. package/dist/esm/agent/index.js.map +1 -1
  300. package/dist/esm/agent/manifests.d.ts.map +1 -1
  301. package/dist/esm/agent/manifests.js +81 -1
  302. package/dist/esm/agent/manifests.js.map +1 -1
  303. package/dist/esm/agent/result.d.ts.map +1 -1
  304. package/dist/esm/agent/result.js +6 -0
  305. package/dist/esm/agent/result.js.map +1 -1
  306. package/dist/esm/agent/search/document.d.ts +6 -0
  307. package/dist/esm/agent/search/document.d.ts.map +1 -0
  308. package/dist/esm/agent/search/document.js +46 -0
  309. package/dist/esm/agent/search/document.js.map +1 -0
  310. package/dist/esm/agent/search/embedding.d.ts +31 -0
  311. package/dist/esm/agent/search/embedding.d.ts.map +1 -0
  312. package/dist/esm/agent/search/embedding.js +103 -0
  313. package/dist/esm/agent/search/embedding.js.map +1 -0
  314. package/dist/esm/agent/search/index.d.ts +10 -0
  315. package/dist/esm/agent/search/index.d.ts.map +1 -0
  316. package/dist/esm/agent/search/index.js +17 -0
  317. package/dist/esm/agent/search/index.js.map +1 -0
  318. package/dist/esm/agent/search/lexical.d.ts +3 -0
  319. package/dist/esm/agent/search/lexical.d.ts.map +1 -0
  320. package/dist/esm/agent/search/lexical.js +25 -0
  321. package/dist/esm/agent/search/lexical.js.map +1 -0
  322. package/dist/esm/agent/search/normalize.d.ts +13 -0
  323. package/dist/esm/agent/search/normalize.d.ts.map +1 -0
  324. package/dist/esm/agent/search/normalize.js +12 -0
  325. package/dist/esm/agent/search/normalize.js.map +1 -0
  326. package/dist/esm/agent/search/search.d.ts +42 -0
  327. package/dist/esm/agent/search/search.d.ts.map +1 -0
  328. package/dist/esm/agent/search/search.js +119 -0
  329. package/dist/esm/agent/search/search.js.map +1 -0
  330. package/dist/esm/agent/search/searchIndex.d.ts +42 -0
  331. package/dist/esm/agent/search/searchIndex.d.ts.map +1 -0
  332. package/dist/esm/agent/search/searchIndex.js +114 -0
  333. package/dist/esm/agent/search/searchIndex.js.map +1 -0
  334. package/dist/esm/agent/search/types.d.ts +67 -0
  335. package/dist/esm/agent/search/types.d.ts.map +1 -0
  336. package/dist/esm/agent/search/types.js +7 -0
  337. package/dist/esm/agent/search/types.js.map +1 -0
  338. package/dist/esm/agent/search/weights.d.ts +22 -0
  339. package/dist/esm/agent/search/weights.d.ts.map +1 -0
  340. package/dist/esm/agent/search/weights.js +31 -0
  341. package/dist/esm/agent/search/weights.js.map +1 -0
  342. package/dist/esm/agent/search/wordvectors.json +1 -0
  343. package/dist/esm/agent/types.d.ts +1 -1
  344. package/dist/esm/agent/types.d.ts.map +1 -1
  345. package/dist/esm/components/catalog.d.ts +1 -1
  346. package/dist/esm/components/catalog.d.ts.map +1 -1
  347. package/dist/esm/components/catalog.js +18 -0
  348. package/dist/esm/components/catalog.js.map +1 -1
  349. package/dist/esm/components/onboarding/animated-status/AnimatedStage.d.ts +9 -0
  350. package/dist/esm/components/onboarding/animated-status/AnimatedStage.d.ts.map +1 -0
  351. package/dist/esm/components/onboarding/animated-status/AnimatedStage.js +18 -0
  352. package/dist/esm/components/onboarding/animated-status/AnimatedStage.js.map +1 -0
  353. package/dist/esm/components/onboarding/animated-status/AnimatedStage.types.d.ts +31 -0
  354. package/dist/esm/components/onboarding/animated-status/AnimatedStage.types.d.ts.map +1 -0
  355. package/dist/esm/components/onboarding/animated-status/AnimatedStage.types.js +3 -0
  356. package/dist/esm/components/onboarding/animated-status/AnimatedStage.types.js.map +1 -0
  357. package/dist/esm/components/onboarding/animated-status/AnimatedStage.web.d.ts +4 -0
  358. package/dist/esm/components/onboarding/animated-status/AnimatedStage.web.d.ts.map +1 -0
  359. package/dist/esm/components/onboarding/animated-status/AnimatedStage.web.js +86 -0
  360. package/dist/esm/components/onboarding/animated-status/AnimatedStage.web.js.map +1 -0
  361. package/dist/esm/components/onboarding/animated-status/AnimatedStatusView.d.ts +32 -0
  362. package/dist/esm/components/onboarding/animated-status/AnimatedStatusView.d.ts.map +1 -0
  363. package/dist/esm/components/onboarding/animated-status/AnimatedStatusView.js +59 -0
  364. package/dist/esm/components/onboarding/animated-status/AnimatedStatusView.js.map +1 -0
  365. package/dist/esm/components/onboarding/animated-status/AnimatedStill.d.ts +8 -0
  366. package/dist/esm/components/onboarding/animated-status/AnimatedStill.d.ts.map +1 -0
  367. package/dist/esm/components/onboarding/animated-status/AnimatedStill.js +17 -0
  368. package/dist/esm/components/onboarding/animated-status/AnimatedStill.js.map +1 -0
  369. package/dist/esm/components/onboarding/animated-status/contract.d.ts +61 -0
  370. package/dist/esm/components/onboarding/animated-status/contract.d.ts.map +1 -0
  371. package/dist/esm/components/onboarding/animated-status/contract.js +78 -0
  372. package/dist/esm/components/onboarding/animated-status/contract.js.map +1 -0
  373. package/dist/esm/components/onboarding/animated-status/engine.d.ts +24 -0
  374. package/dist/esm/components/onboarding/animated-status/engine.d.ts.map +1 -0
  375. package/dist/esm/components/onboarding/animated-status/engine.js +32 -0
  376. package/dist/esm/components/onboarding/animated-status/engine.js.map +1 -0
  377. package/dist/esm/components/onboarding/animated-status/index.d.ts +5 -0
  378. package/dist/esm/components/onboarding/animated-status/index.d.ts.map +1 -0
  379. package/dist/esm/components/onboarding/animated-status/index.js +4 -0
  380. package/dist/esm/components/onboarding/animated-status/index.js.map +1 -0
  381. package/dist/esm/components/onboarding/animated-status/presets.json +126 -0
  382. package/dist/esm/components/onboarding/animated-status/riv.d.ts +3 -0
  383. package/dist/esm/components/onboarding/animated-status/riv.d.ts.map +1 -0
  384. package/dist/esm/components/onboarding/animated-status/riv.js +4 -0
  385. package/dist/esm/components/onboarding/animated-status/riv.js.map +1 -0
  386. package/dist/esm/components/onboarding/index.d.ts +2 -0
  387. package/dist/esm/components/onboarding/index.d.ts.map +1 -1
  388. package/dist/esm/components/onboarding/index.js +4 -0
  389. package/dist/esm/components/onboarding/index.js.map +1 -1
  390. package/dist/esm/components/onboarding/presets.d.ts.map +1 -1
  391. package/dist/esm/components/onboarding/presets.js +6 -0
  392. package/dist/esm/components/onboarding/presets.js.map +1 -1
  393. package/dist/esm/components/onboarding/receipt-printer/ReceiptStage.d.ts +4 -6
  394. package/dist/esm/components/onboarding/receipt-printer/ReceiptStage.d.ts.map +1 -1
  395. package/dist/esm/components/onboarding/receipt-printer/ReceiptStage.js +42 -6
  396. package/dist/esm/components/onboarding/receipt-printer/ReceiptStage.js.map +1 -1
  397. package/dist/esm/components/onboarding/send-completion/SendCompletionView.d.ts +47 -0
  398. package/dist/esm/components/onboarding/send-completion/SendCompletionView.d.ts.map +1 -0
  399. package/dist/esm/components/onboarding/send-completion/SendCompletionView.js +108 -0
  400. package/dist/esm/components/onboarding/send-completion/SendCompletionView.js.map +1 -0
  401. package/dist/esm/components/onboarding/send-completion/SendStage.d.ts +9 -0
  402. package/dist/esm/components/onboarding/send-completion/SendStage.d.ts.map +1 -0
  403. package/dist/esm/components/onboarding/send-completion/SendStage.js +34 -0
  404. package/dist/esm/components/onboarding/send-completion/SendStage.js.map +1 -0
  405. package/dist/esm/components/onboarding/send-completion/SendStage.types.d.ts +33 -0
  406. package/dist/esm/components/onboarding/send-completion/SendStage.types.d.ts.map +1 -0
  407. package/dist/esm/components/onboarding/send-completion/SendStage.types.js +3 -0
  408. package/dist/esm/components/onboarding/send-completion/SendStage.types.js.map +1 -0
  409. package/dist/esm/components/onboarding/send-completion/SendStage.web.d.ts +4 -0
  410. package/dist/esm/components/onboarding/send-completion/SendStage.web.d.ts.map +1 -0
  411. package/dist/esm/components/onboarding/send-completion/SendStage.web.js +104 -0
  412. package/dist/esm/components/onboarding/send-completion/SendStage.web.js.map +1 -0
  413. package/dist/esm/components/onboarding/send-completion/SendStill.d.ts +11 -0
  414. package/dist/esm/components/onboarding/send-completion/SendStill.d.ts.map +1 -0
  415. package/dist/esm/components/onboarding/send-completion/SendStill.js +14 -0
  416. package/dist/esm/components/onboarding/send-completion/SendStill.js.map +1 -0
  417. package/dist/esm/components/onboarding/send-completion/contract.d.ts +99 -0
  418. package/dist/esm/components/onboarding/send-completion/contract.d.ts.map +1 -0
  419. package/dist/esm/components/onboarding/send-completion/contract.js +76 -0
  420. package/dist/esm/components/onboarding/send-completion/contract.js.map +1 -0
  421. package/dist/esm/components/onboarding/send-completion/engine.d.ts +20 -0
  422. package/dist/esm/components/onboarding/send-completion/engine.d.ts.map +1 -0
  423. package/dist/esm/components/onboarding/send-completion/engine.js +28 -0
  424. package/dist/esm/components/onboarding/send-completion/engine.js.map +1 -0
  425. package/dist/esm/components/onboarding/send-completion/index.d.ts +6 -0
  426. package/dist/esm/components/onboarding/send-completion/index.d.ts.map +1 -0
  427. package/dist/esm/components/onboarding/send-completion/index.js +6 -0
  428. package/dist/esm/components/onboarding/send-completion/index.js.map +1 -0
  429. package/dist/esm/components/onboarding/send-completion/presets.json +132 -0
  430. package/dist/esm/components/onboarding/send-completion/riv.d.ts +3 -0
  431. package/dist/esm/components/onboarding/send-completion/riv.d.ts.map +1 -0
  432. package/dist/esm/components/onboarding/send-completion/riv.js +4 -0
  433. package/dist/esm/components/onboarding/send-completion/riv.js.map +1 -0
  434. package/dist/esm/components/onboarding/shared/actions-data.d.ts.map +1 -1
  435. package/dist/esm/components/onboarding/shared/actions-data.js +2 -0
  436. package/dist/esm/components/onboarding/shared/actions-data.js.map +1 -1
  437. package/dist/esm/components/onboarding/shared/configColor.d.ts +29 -0
  438. package/dist/esm/components/onboarding/shared/configColor.d.ts.map +1 -0
  439. package/dist/esm/components/onboarding/shared/configColor.js +69 -0
  440. package/dist/esm/components/onboarding/shared/configColor.js.map +1 -0
  441. package/dist/esm/components/onboarding/shared/contract.d.ts +1 -1
  442. package/dist/esm/components/onboarding/shared/contract.d.ts.map +1 -1
  443. package/dist/esm/components/onboarding/shared/contract.js +4 -0
  444. package/dist/esm/components/onboarding/shared/contract.js.map +1 -1
  445. package/dist/esm/components/onboarding/shared/describe.d.ts.map +1 -1
  446. package/dist/esm/components/onboarding/shared/describe.js +1 -1
  447. package/dist/esm/components/onboarding/shared/describe.js.map +1 -1
  448. package/dist/esm/components/onboarding/shared/mock.d.ts +2 -0
  449. package/dist/esm/components/onboarding/shared/mock.d.ts.map +1 -1
  450. package/dist/esm/components/onboarding/shared/mock.js +2 -0
  451. package/dist/esm/components/onboarding/shared/mock.js.map +1 -1
  452. package/dist/esm/components/onboarding/views.d.ts.map +1 -1
  453. package/dist/esm/components/onboarding/views.js +8 -0
  454. package/dist/esm/components/onboarding/views.js.map +1 -1
  455. package/dist/esm/index.js +1 -1
  456. package/dist/esm/index.js.map +1 -1
  457. package/dist/esm/motion/MotionPlayer.d.ts +22 -0
  458. package/dist/esm/motion/MotionPlayer.d.ts.map +1 -0
  459. package/dist/esm/motion/MotionPlayer.js +39 -0
  460. package/dist/esm/motion/MotionPlayer.js.map +1 -0
  461. package/dist/esm/motion/agent.d.ts +146 -0
  462. package/dist/esm/motion/agent.d.ts.map +1 -0
  463. package/dist/esm/motion/agent.js +278 -0
  464. package/dist/esm/motion/agent.js.map +1 -0
  465. package/dist/esm/motion/cat/Cat.d.ts +43 -0
  466. package/dist/esm/motion/cat/Cat.d.ts.map +1 -0
  467. package/dist/esm/motion/cat/Cat.js +74 -0
  468. package/dist/esm/motion/cat/Cat.js.map +1 -0
  469. package/dist/esm/motion/cat/animation.d.ts +86 -0
  470. package/dist/esm/motion/cat/animation.d.ts.map +1 -0
  471. package/dist/esm/motion/cat/animation.js +193 -0
  472. package/dist/esm/motion/cat/animation.js.map +1 -0
  473. package/dist/esm/motion/cat/art.generated.d.ts +53 -0
  474. package/dist/esm/motion/cat/art.generated.d.ts.map +1 -0
  475. package/dist/esm/motion/cat/art.generated.js +34 -0
  476. package/dist/esm/motion/cat/art.generated.js.map +1 -0
  477. package/dist/esm/motion/cat/config.d.ts +103 -0
  478. package/dist/esm/motion/cat/config.d.ts.map +1 -0
  479. package/dist/esm/motion/cat/config.js +129 -0
  480. package/dist/esm/motion/cat/config.js.map +1 -0
  481. package/dist/esm/motion/cat/index.d.ts +13 -0
  482. package/dist/esm/motion/cat/index.d.ts.map +1 -0
  483. package/dist/esm/motion/cat/index.js +13 -0
  484. package/dist/esm/motion/cat/index.js.map +1 -0
  485. package/dist/esm/motion/cat/rig.d.ts +44 -0
  486. package/dist/esm/motion/cat/rig.d.ts.map +1 -0
  487. package/dist/esm/motion/cat/rig.js +86 -0
  488. package/dist/esm/motion/cat/rig.js.map +1 -0
  489. package/dist/esm/motion/cat/scene.d.ts +66 -0
  490. package/dist/esm/motion/cat/scene.d.ts.map +1 -0
  491. package/dist/esm/motion/cat/scene.js +137 -0
  492. package/dist/esm/motion/cat/scene.js.map +1 -0
  493. package/dist/esm/motion/configurable/config.d.ts +80 -0
  494. package/dist/esm/motion/configurable/config.d.ts.map +1 -0
  495. package/dist/esm/motion/configurable/config.js +468 -0
  496. package/dist/esm/motion/configurable/config.js.map +1 -0
  497. package/dist/esm/motion/configurable/controls.d.ts +74 -0
  498. package/dist/esm/motion/configurable/controls.d.ts.map +1 -0
  499. package/dist/esm/motion/configurable/controls.js +38 -0
  500. package/dist/esm/motion/configurable/controls.js.map +1 -0
  501. package/dist/esm/motion/easing.d.ts +4 -0
  502. package/dist/esm/motion/easing.d.ts.map +1 -0
  503. package/dist/esm/motion/easing.js +58 -0
  504. package/dist/esm/motion/easing.js.map +1 -0
  505. package/dist/esm/motion/fit.d.ts +8 -0
  506. package/dist/esm/motion/fit.d.ts.map +1 -0
  507. package/dist/esm/motion/fit.js +8 -0
  508. package/dist/esm/motion/fit.js.map +1 -0
  509. package/dist/esm/motion/index.d.ts +27 -0
  510. package/dist/esm/motion/index.d.ts.map +1 -0
  511. package/dist/esm/motion/index.js +21 -0
  512. package/dist/esm/motion/index.js.map +1 -0
  513. package/dist/esm/motion/neon/GlowRenderer.d.ts +31 -0
  514. package/dist/esm/motion/neon/GlowRenderer.d.ts.map +1 -0
  515. package/dist/esm/motion/neon/GlowRenderer.js +14 -0
  516. package/dist/esm/motion/neon/GlowRenderer.js.map +1 -0
  517. package/dist/esm/motion/neon/NeonCanvas.d.ts +42 -0
  518. package/dist/esm/motion/neon/NeonCanvas.d.ts.map +1 -0
  519. package/dist/esm/motion/neon/NeonCanvas.js +92 -0
  520. package/dist/esm/motion/neon/NeonCanvas.js.map +1 -0
  521. package/dist/esm/motion/neon/NeonText.d.ts +26 -0
  522. package/dist/esm/motion/neon/NeonText.d.ts.map +1 -0
  523. package/dist/esm/motion/neon/NeonText.js +103 -0
  524. package/dist/esm/motion/neon/NeonText.js.map +1 -0
  525. package/dist/esm/motion/neon/NeonTextFrame.d.ts +29 -0
  526. package/dist/esm/motion/neon/NeonTextFrame.d.ts.map +1 -0
  527. package/dist/esm/motion/neon/NeonTextFrame.js +33 -0
  528. package/dist/esm/motion/neon/NeonTextFrame.js.map +1 -0
  529. package/dist/esm/motion/neon/artwork.d.ts +29 -0
  530. package/dist/esm/motion/neon/artwork.d.ts.map +1 -0
  531. package/dist/esm/motion/neon/artwork.js +98 -0
  532. package/dist/esm/motion/neon/artwork.js.map +1 -0
  533. package/dist/esm/motion/neon/audio.d.ts +49 -0
  534. package/dist/esm/motion/neon/audio.d.ts.map +1 -0
  535. package/dist/esm/motion/neon/audio.js +161 -0
  536. package/dist/esm/motion/neon/audio.js.map +1 -0
  537. package/dist/esm/motion/neon/config.d.ts +319 -0
  538. package/dist/esm/motion/neon/config.d.ts.map +1 -0
  539. package/dist/esm/motion/neon/config.js +319 -0
  540. package/dist/esm/motion/neon/config.js.map +1 -0
  541. package/dist/esm/motion/neon/flicker.d.ts +82 -0
  542. package/dist/esm/motion/neon/flicker.d.ts.map +1 -0
  543. package/dist/esm/motion/neon/flicker.js +187 -0
  544. package/dist/esm/motion/neon/flicker.js.map +1 -0
  545. package/dist/esm/motion/neon/fonts.d.ts +29 -0
  546. package/dist/esm/motion/neon/fonts.d.ts.map +1 -0
  547. package/dist/esm/motion/neon/fonts.js +47 -0
  548. package/dist/esm/motion/neon/fonts.js.map +1 -0
  549. package/dist/esm/motion/neon/frame.d.ts +22 -0
  550. package/dist/esm/motion/neon/frame.d.ts.map +1 -0
  551. package/dist/esm/motion/neon/frame.js +20 -0
  552. package/dist/esm/motion/neon/frame.js.map +1 -0
  553. package/dist/esm/motion/neon/glitch.d.ts +64 -0
  554. package/dist/esm/motion/neon/glitch.d.ts.map +1 -0
  555. package/dist/esm/motion/neon/glitch.js +108 -0
  556. package/dist/esm/motion/neon/glitch.js.map +1 -0
  557. package/dist/esm/motion/neon/index.d.ts +29 -0
  558. package/dist/esm/motion/neon/index.d.ts.map +1 -0
  559. package/dist/esm/motion/neon/index.js +28 -0
  560. package/dist/esm/motion/neon/index.js.map +1 -0
  561. package/dist/esm/motion/neon/layers.d.ts +56 -0
  562. package/dist/esm/motion/neon/layers.d.ts.map +1 -0
  563. package/dist/esm/motion/neon/layers.js +64 -0
  564. package/dist/esm/motion/neon/layers.js.map +1 -0
  565. package/dist/esm/motion/neon/material.d.ts +68 -0
  566. package/dist/esm/motion/neon/material.d.ts.map +1 -0
  567. package/dist/esm/motion/neon/material.js +51 -0
  568. package/dist/esm/motion/neon/material.js.map +1 -0
  569. package/dist/esm/motion/neon/random.d.ts +15 -0
  570. package/dist/esm/motion/neon/random.d.ts.map +1 -0
  571. package/dist/esm/motion/neon/random.js +37 -0
  572. package/dist/esm/motion/neon/random.js.map +1 -0
  573. package/dist/esm/motion/neon/scene.d.ts +255 -0
  574. package/dist/esm/motion/neon/scene.d.ts.map +1 -0
  575. package/dist/esm/motion/neon/scene.js +532 -0
  576. package/dist/esm/motion/neon/scene.js.map +1 -0
  577. package/dist/esm/motion/neon/synth.d.ts +18 -0
  578. package/dist/esm/motion/neon/synth.d.ts.map +1 -0
  579. package/dist/esm/motion/neon/synth.js +208 -0
  580. package/dist/esm/motion/neon/synth.js.map +1 -0
  581. package/dist/esm/motion/neon/typography.d.ts +53 -0
  582. package/dist/esm/motion/neon/typography.d.ts.map +1 -0
  583. package/dist/esm/motion/neon/typography.js +74 -0
  584. package/dist/esm/motion/neon/typography.js.map +1 -0
  585. package/dist/esm/motion/neon/wall.d.ts +62 -0
  586. package/dist/esm/motion/neon/wall.d.ts.map +1 -0
  587. package/dist/esm/motion/neon/wall.js +106 -0
  588. package/dist/esm/motion/neon/wall.js.map +1 -0
  589. package/dist/esm/motion/paperfold/PaperFold.d.ts +36 -0
  590. package/dist/esm/motion/paperfold/PaperFold.d.ts.map +1 -0
  591. package/dist/esm/motion/paperfold/PaperFold.js +37 -0
  592. package/dist/esm/motion/paperfold/PaperFold.js.map +1 -0
  593. package/dist/esm/motion/paperfold/PaperFoldFrame.d.ts +39 -0
  594. package/dist/esm/motion/paperfold/PaperFoldFrame.d.ts.map +1 -0
  595. package/dist/esm/motion/paperfold/PaperFoldFrame.js +283 -0
  596. package/dist/esm/motion/paperfold/PaperFoldFrame.js.map +1 -0
  597. package/dist/esm/motion/paperfold/PaperFoldPlayer.d.ts +27 -0
  598. package/dist/esm/motion/paperfold/PaperFoldPlayer.d.ts.map +1 -0
  599. package/dist/esm/motion/paperfold/PaperFoldPlayer.js +56 -0
  600. package/dist/esm/motion/paperfold/PaperFoldPlayer.js.map +1 -0
  601. package/dist/esm/motion/paperfold/art.d.ts +148 -0
  602. package/dist/esm/motion/paperfold/art.d.ts.map +1 -0
  603. package/dist/esm/motion/paperfold/art.js +374 -0
  604. package/dist/esm/motion/paperfold/art.js.map +1 -0
  605. package/dist/esm/motion/paperfold/config.d.ts +47 -0
  606. package/dist/esm/motion/paperfold/config.d.ts.map +1 -0
  607. package/dist/esm/motion/paperfold/config.js +96 -0
  608. package/dist/esm/motion/paperfold/config.js.map +1 -0
  609. package/dist/esm/motion/paperfold/controls.d.ts +57 -0
  610. package/dist/esm/motion/paperfold/controls.d.ts.map +1 -0
  611. package/dist/esm/motion/paperfold/controls.js +506 -0
  612. package/dist/esm/motion/paperfold/controls.js.map +1 -0
  613. package/dist/esm/motion/paperfold/engine.d.ts +397 -0
  614. package/dist/esm/motion/paperfold/engine.d.ts.map +1 -0
  615. package/dist/esm/motion/paperfold/engine.js +699 -0
  616. package/dist/esm/motion/paperfold/engine.js.map +1 -0
  617. package/dist/esm/motion/paperfold/fonts.d.ts +3 -0
  618. package/dist/esm/motion/paperfold/fonts.d.ts.map +1 -0
  619. package/dist/esm/motion/paperfold/fonts.js +21 -0
  620. package/dist/esm/motion/paperfold/fonts.js.map +1 -0
  621. package/dist/esm/motion/paperfold/index.d.ts +17 -0
  622. package/dist/esm/motion/paperfold/index.d.ts.map +1 -0
  623. package/dist/esm/motion/paperfold/index.js +17 -0
  624. package/dist/esm/motion/paperfold/index.js.map +1 -0
  625. package/dist/esm/motion/paperfold/manipulate.d.ts +59 -0
  626. package/dist/esm/motion/paperfold/manipulate.d.ts.map +1 -0
  627. package/dist/esm/motion/paperfold/manipulate.js +161 -0
  628. package/dist/esm/motion/paperfold/manipulate.js.map +1 -0
  629. package/dist/esm/motion/paperfold/presets.d.ts +9 -0
  630. package/dist/esm/motion/paperfold/presets.d.ts.map +1 -0
  631. package/dist/esm/motion/paperfold/presets.js +115 -0
  632. package/dist/esm/motion/paperfold/presets.js.map +1 -0
  633. package/dist/esm/motion/paperfold/template.d.ts +3 -0
  634. package/dist/esm/motion/paperfold/template.d.ts.map +1 -0
  635. package/dist/esm/motion/paperfold/template.js +37 -0
  636. package/dist/esm/motion/paperfold/template.js.map +1 -0
  637. package/dist/esm/motion/player.d.ts +35 -0
  638. package/dist/esm/motion/player.d.ts.map +1 -0
  639. package/dist/esm/motion/player.js +197 -0
  640. package/dist/esm/motion/player.js.map +1 -0
  641. package/dist/esm/motion/promo/PromoFrame.d.ts +31 -0
  642. package/dist/esm/motion/promo/PromoFrame.d.ts.map +1 -0
  643. package/dist/esm/motion/promo/PromoFrame.js +288 -0
  644. package/dist/esm/motion/promo/PromoFrame.js.map +1 -0
  645. package/dist/esm/motion/promo/PromoShowcasePlayer.d.ts +25 -0
  646. package/dist/esm/motion/promo/PromoShowcasePlayer.d.ts.map +1 -0
  647. package/dist/esm/motion/promo/PromoShowcasePlayer.js +56 -0
  648. package/dist/esm/motion/promo/PromoShowcasePlayer.js.map +1 -0
  649. package/dist/esm/motion/promo/config.d.ts +91 -0
  650. package/dist/esm/motion/promo/config.d.ts.map +1 -0
  651. package/dist/esm/motion/promo/config.js +550 -0
  652. package/dist/esm/motion/promo/config.js.map +1 -0
  653. package/dist/esm/motion/promo/controls.d.ts +86 -0
  654. package/dist/esm/motion/promo/controls.d.ts.map +1 -0
  655. package/dist/esm/motion/promo/controls.js +567 -0
  656. package/dist/esm/motion/promo/controls.js.map +1 -0
  657. package/dist/esm/motion/promo/easing.d.ts +3 -0
  658. package/dist/esm/motion/promo/easing.d.ts.map +1 -0
  659. package/dist/esm/motion/promo/easing.js +32 -0
  660. package/dist/esm/motion/promo/easing.js.map +1 -0
  661. package/dist/esm/motion/promo/engine.d.ts +205 -0
  662. package/dist/esm/motion/promo/engine.d.ts.map +1 -0
  663. package/dist/esm/motion/promo/engine.js +551 -0
  664. package/dist/esm/motion/promo/engine.js.map +1 -0
  665. package/dist/esm/motion/promo/fonts.d.ts +7 -0
  666. package/dist/esm/motion/promo/fonts.d.ts.map +1 -0
  667. package/dist/esm/motion/promo/fonts.js +16 -0
  668. package/dist/esm/motion/promo/fonts.js.map +1 -0
  669. package/dist/esm/motion/promo/icons.d.ts +7 -0
  670. package/dist/esm/motion/promo/icons.d.ts.map +1 -0
  671. package/dist/esm/motion/promo/icons.js +26 -0
  672. package/dist/esm/motion/promo/icons.js.map +1 -0
  673. package/dist/esm/motion/promo/index.d.ts +15 -0
  674. package/dist/esm/motion/promo/index.d.ts.map +1 -0
  675. package/dist/esm/motion/promo/index.js +15 -0
  676. package/dist/esm/motion/promo/index.js.map +1 -0
  677. package/dist/esm/motion/promo/presets.d.ts +13 -0
  678. package/dist/esm/motion/promo/presets.d.ts.map +1 -0
  679. package/dist/esm/motion/promo/presets.js +40 -0
  680. package/dist/esm/motion/promo/presets.js.map +1 -0
  681. package/dist/esm/motion/promo/template.d.ts +8 -0
  682. package/dist/esm/motion/promo/template.d.ts.map +1 -0
  683. package/dist/esm/motion/promo/template.js +35 -0
  684. package/dist/esm/motion/promo/template.js.map +1 -0
  685. package/dist/esm/motion/replication2/Replication2Player.d.ts +26 -0
  686. package/dist/esm/motion/replication2/Replication2Player.d.ts.map +1 -0
  687. package/dist/esm/motion/replication2/Replication2Player.js +90 -0
  688. package/dist/esm/motion/replication2/Replication2Player.js.map +1 -0
  689. package/dist/esm/motion/replication2/config.d.ts +78 -0
  690. package/dist/esm/motion/replication2/config.d.ts.map +1 -0
  691. package/dist/esm/motion/replication2/config.js +341 -0
  692. package/dist/esm/motion/replication2/config.js.map +1 -0
  693. package/dist/esm/motion/replication2/controls.d.ts +70 -0
  694. package/dist/esm/motion/replication2/controls.d.ts.map +1 -0
  695. package/dist/esm/motion/replication2/controls.js +283 -0
  696. package/dist/esm/motion/replication2/controls.js.map +1 -0
  697. package/dist/esm/motion/replication2/driver.d.ts +23 -0
  698. package/dist/esm/motion/replication2/driver.d.ts.map +1 -0
  699. package/dist/esm/motion/replication2/driver.js +65 -0
  700. package/dist/esm/motion/replication2/driver.js.map +1 -0
  701. package/dist/esm/motion/replication2/easing.d.ts +19 -0
  702. package/dist/esm/motion/replication2/easing.d.ts.map +1 -0
  703. package/dist/esm/motion/replication2/easing.js +92 -0
  704. package/dist/esm/motion/replication2/easing.js.map +1 -0
  705. package/dist/esm/motion/replication2/engine.d.ts +236 -0
  706. package/dist/esm/motion/replication2/engine.d.ts.map +1 -0
  707. package/dist/esm/motion/replication2/engine.js +470 -0
  708. package/dist/esm/motion/replication2/engine.js.map +1 -0
  709. package/dist/esm/motion/replication2/html.d.ts +30 -0
  710. package/dist/esm/motion/replication2/html.d.ts.map +1 -0
  711. package/dist/esm/motion/replication2/html.js +83 -0
  712. package/dist/esm/motion/replication2/html.js.map +1 -0
  713. package/dist/esm/motion/replication2/index.d.ts +15 -0
  714. package/dist/esm/motion/replication2/index.d.ts.map +1 -0
  715. package/dist/esm/motion/replication2/index.js +15 -0
  716. package/dist/esm/motion/replication2/index.js.map +1 -0
  717. package/dist/esm/motion/replication2/measure.d.ts +3 -0
  718. package/dist/esm/motion/replication2/measure.d.ts.map +1 -0
  719. package/dist/esm/motion/replication2/measure.js +27 -0
  720. package/dist/esm/motion/replication2/measure.js.map +1 -0
  721. package/dist/esm/motion/replication2/metrics.d.ts +6 -0
  722. package/dist/esm/motion/replication2/metrics.d.ts.map +1 -0
  723. package/dist/esm/motion/replication2/metrics.js +7 -0
  724. package/dist/esm/motion/replication2/metrics.js.map +1 -0
  725. package/dist/esm/motion/replication2/presets.d.ts +13 -0
  726. package/dist/esm/motion/replication2/presets.d.ts.map +1 -0
  727. package/dist/esm/motion/replication2/presets.js +63 -0
  728. package/dist/esm/motion/replication2/presets.js.map +1 -0
  729. package/dist/esm/motion/replication2/riv.d.ts +3 -0
  730. package/dist/esm/motion/replication2/riv.d.ts.map +1 -0
  731. package/dist/esm/motion/replication2/riv.js +4 -0
  732. package/dist/esm/motion/replication2/riv.js.map +1 -0
  733. package/dist/esm/motion/replication2/rive-contract.d.ts +27 -0
  734. package/dist/esm/motion/replication2/rive-contract.d.ts.map +1 -0
  735. package/dist/esm/motion/replication2/rive-contract.js +153 -0
  736. package/dist/esm/motion/replication2/rive-contract.js.map +1 -0
  737. package/dist/esm/motion/replication2/template.d.ts +8 -0
  738. package/dist/esm/motion/replication2/template.d.ts.map +1 -0
  739. package/dist/esm/motion/replication2/template.js +32 -0
  740. package/dist/esm/motion/replication2/template.js.map +1 -0
  741. package/dist/esm/motion/sample.d.ts +61 -0
  742. package/dist/esm/motion/sample.d.ts.map +1 -0
  743. package/dist/esm/motion/sample.js +138 -0
  744. package/dist/esm/motion/sample.js.map +1 -0
  745. package/dist/esm/motion/templates/hey-template.d.ts +3 -0
  746. package/dist/esm/motion/templates/hey-template.d.ts.map +1 -0
  747. package/dist/esm/motion/templates/hey-template.js +1549 -0
  748. package/dist/esm/motion/templates/hey-template.js.map +1 -0
  749. package/dist/esm/motion/templates/index.d.ts +22 -0
  750. package/dist/esm/motion/templates/index.d.ts.map +1 -0
  751. package/dist/esm/motion/templates/index.js +15 -0
  752. package/dist/esm/motion/templates/index.js.map +1 -0
  753. package/dist/esm/motion/templates/word-motion.d.ts +3 -0
  754. package/dist/esm/motion/templates/word-motion.d.ts.map +1 -0
  755. package/dist/esm/motion/templates/word-motion.js +1162 -0
  756. package/dist/esm/motion/templates/word-motion.js.map +1 -0
  757. package/dist/esm/motion/types.d.ts +192 -0
  758. package/dist/esm/motion/types.d.ts.map +1 -0
  759. package/dist/esm/motion/types.js +2 -0
  760. package/dist/esm/motion/types.js.map +1 -0
  761. package/dist/esm/motion/typesurface/TypeSurfaceCanvas.d.ts +22 -0
  762. package/dist/esm/motion/typesurface/TypeSurfaceCanvas.d.ts.map +1 -0
  763. package/dist/esm/motion/typesurface/TypeSurfaceCanvas.js +58 -0
  764. package/dist/esm/motion/typesurface/TypeSurfaceCanvas.js.map +1 -0
  765. package/dist/esm/motion/typesurface/art.d.ts +21 -0
  766. package/dist/esm/motion/typesurface/art.d.ts.map +1 -0
  767. package/dist/esm/motion/typesurface/art.js +854 -0
  768. package/dist/esm/motion/typesurface/art.js.map +1 -0
  769. package/dist/esm/motion/typesurface/config.d.ts +273 -0
  770. package/dist/esm/motion/typesurface/config.d.ts.map +1 -0
  771. package/dist/esm/motion/typesurface/config.js +260 -0
  772. package/dist/esm/motion/typesurface/config.js.map +1 -0
  773. package/dist/esm/motion/typesurface/engine.d.ts +94 -0
  774. package/dist/esm/motion/typesurface/engine.d.ts.map +1 -0
  775. package/dist/esm/motion/typesurface/engine.js +603 -0
  776. package/dist/esm/motion/typesurface/engine.js.map +1 -0
  777. package/dist/esm/motion/typesurface/fonts.d.ts +25 -0
  778. package/dist/esm/motion/typesurface/fonts.d.ts.map +1 -0
  779. package/dist/esm/motion/typesurface/fonts.js +40 -0
  780. package/dist/esm/motion/typesurface/fonts.js.map +1 -0
  781. package/dist/esm/motion/typesurface/index.d.ts +17 -0
  782. package/dist/esm/motion/typesurface/index.d.ts.map +1 -0
  783. package/dist/esm/motion/typesurface/index.js +17 -0
  784. package/dist/esm/motion/typesurface/index.js.map +1 -0
  785. package/dist/esm/motion/typesurface/layout.d.ts +57 -0
  786. package/dist/esm/motion/typesurface/layout.d.ts.map +1 -0
  787. package/dist/esm/motion/typesurface/layout.js +122 -0
  788. package/dist/esm/motion/typesurface/layout.js.map +1 -0
  789. package/dist/esm/motion/typesurface/ops.d.ts +70 -0
  790. package/dist/esm/motion/typesurface/ops.d.ts.map +1 -0
  791. package/dist/esm/motion/typesurface/ops.js +164 -0
  792. package/dist/esm/motion/typesurface/ops.js.map +1 -0
  793. package/dist/esm/motion/typesurface/presets.d.ts +33 -0
  794. package/dist/esm/motion/typesurface/presets.d.ts.map +1 -0
  795. package/dist/esm/motion/typesurface/presets.js +185 -0
  796. package/dist/esm/motion/typesurface/presets.js.map +1 -0
  797. package/dist/esm/motion/typesurface/renderer.d.ts +78 -0
  798. package/dist/esm/motion/typesurface/renderer.d.ts.map +1 -0
  799. package/dist/esm/motion/typesurface/renderer.js +666 -0
  800. package/dist/esm/motion/typesurface/renderer.js.map +1 -0
  801. package/dist/esm/motion/typesurface/shaders.d.ts +17 -0
  802. package/dist/esm/motion/typesurface/shaders.d.ts.map +1 -0
  803. package/dist/esm/motion/typesurface/shaders.js +297 -0
  804. package/dist/esm/motion/typesurface/shaders.js.map +1 -0
  805. package/dist/esm/motion/typesurface/surfaces.d.ts +81 -0
  806. package/dist/esm/motion/typesurface/surfaces.d.ts.map +1 -0
  807. package/dist/esm/motion/typesurface/surfaces.js +149 -0
  808. package/dist/esm/motion/typesurface/surfaces.js.map +1 -0
  809. package/dist/esm/motion/typesurface/text.d.ts +17 -0
  810. package/dist/esm/motion/typesurface/text.d.ts.map +1 -0
  811. package/dist/esm/motion/typesurface/text.js +28 -0
  812. package/dist/esm/motion/typesurface/text.js.map +1 -0
  813. package/dist/esm/motion/typesurface/timeline.d.ts +15 -0
  814. package/dist/esm/motion/typesurface/timeline.d.ts.map +1 -0
  815. package/dist/esm/motion/typesurface/timeline.js +57 -0
  816. package/dist/esm/motion/typesurface/timeline.js.map +1 -0
  817. package/dist/esm/motion/validate.d.ts +22 -0
  818. package/dist/esm/motion/validate.d.ts.map +1 -0
  819. package/dist/esm/motion/validate.js +84 -0
  820. package/dist/esm/motion/validate.js.map +1 -0
  821. package/dist/esm/native/RiveReceiptStage.d.ts +25 -2
  822. package/dist/esm/native/RiveReceiptStage.d.ts.map +1 -1
  823. package/dist/esm/native/RiveReceiptStage.js +7 -148
  824. package/dist/esm/native/RiveReceiptStage.js.map +1 -1
  825. package/dist/esm/native/riveReceiptStageFactory.d.ts +26 -0
  826. package/dist/esm/native/riveReceiptStageFactory.d.ts.map +1 -0
  827. package/dist/esm/native/riveReceiptStageFactory.js +159 -0
  828. package/dist/esm/native/riveReceiptStageFactory.js.map +1 -0
  829. package/dist/esm/tokens/stage.d.ts +7 -0
  830. package/dist/esm/tokens/stage.d.ts.map +1 -0
  831. package/dist/esm/tokens/stage.js +7 -0
  832. package/dist/esm/tokens/stage.js.map +1 -0
  833. package/package.json +36 -1
  834. package/spec/examples/components/onboarding/animated-status/case1.json +42 -0
  835. package/spec/examples/components/onboarding/animated-status/case2.json +42 -0
  836. package/spec/examples/components/onboarding/animated-status/case3.json +42 -0
  837. package/spec/examples/components/onboarding/animated-status/case4.json +42 -0
  838. package/spec/examples/components/onboarding/animated-status/case5.json +42 -0
  839. package/spec/examples/components/onboarding/send-completion/case1.json +48 -0
  840. package/spec/examples/components/onboarding/send-completion/case2.json +48 -0
  841. package/spec/examples/components/onboarding/send-completion/case3.json +48 -0
  842. package/spec/examples/components/onboarding/send-completion/case4.json +48 -0
  843. package/spec/examples/components/onboarding/send-completion/case5.json +48 -0
  844. package/spec/families/onboarding.schema.json +610 -1
  845. package/src/agent/AgentComponent.tsx +1 -1
  846. package/src/agent/base.ts +17 -0
  847. package/src/agent/catalog.ts +0 -32
  848. package/src/agent/core.ts +6 -14
  849. package/src/agent/index.ts +6 -5
  850. package/src/agent/manifests.ts +83 -1
  851. package/src/agent/result.ts +6 -0
  852. package/src/agent/search/document.ts +46 -0
  853. package/src/agent/search/embedding.ts +95 -0
  854. package/src/agent/search/index.ts +20 -0
  855. package/src/agent/search/lexical.ts +25 -0
  856. package/src/agent/search/normalize.ts +17 -0
  857. package/src/agent/search/search.ts +148 -0
  858. package/src/agent/search/searchIndex.ts +107 -0
  859. package/src/agent/search/types.ts +68 -0
  860. package/src/agent/search/weights.ts +32 -0
  861. package/src/agent/types.ts +1 -1
  862. package/src/components/catalog.ts +21 -1
  863. package/src/components/onboarding/animated-status/AnimatedStage.tsx +18 -0
  864. package/src/components/onboarding/animated-status/AnimatedStage.types.ts +30 -0
  865. package/src/components/onboarding/animated-status/AnimatedStage.web.tsx +99 -0
  866. package/src/components/onboarding/animated-status/AnimatedStatusView.tsx +109 -0
  867. package/src/components/onboarding/animated-status/AnimatedStill.tsx +23 -0
  868. package/src/components/onboarding/animated-status/contract.ts +105 -0
  869. package/src/components/onboarding/animated-status/engine.ts +49 -0
  870. package/src/components/onboarding/animated-status/index.ts +8 -0
  871. package/src/components/onboarding/animated-status/presets.json +126 -0
  872. package/src/components/onboarding/animated-status/riv.ts +4 -0
  873. package/src/components/onboarding/index.ts +4 -0
  874. package/src/components/onboarding/presets.ts +6 -0
  875. package/src/components/onboarding/receipt-printer/ReceiptStage.tsx +46 -7
  876. package/src/components/onboarding/send-completion/SendCompletionView.tsx +164 -0
  877. package/src/components/onboarding/send-completion/SendStage.tsx +27 -0
  878. package/src/components/onboarding/send-completion/SendStage.types.ts +32 -0
  879. package/src/components/onboarding/send-completion/SendStage.web.tsx +116 -0
  880. package/src/components/onboarding/send-completion/SendStill.tsx +19 -0
  881. package/src/components/onboarding/send-completion/contract.ts +127 -0
  882. package/src/components/onboarding/send-completion/engine.ts +37 -0
  883. package/src/components/onboarding/send-completion/index.ts +10 -0
  884. package/src/components/onboarding/send-completion/presets.json +132 -0
  885. package/src/components/onboarding/send-completion/riv.ts +4 -0
  886. package/src/components/onboarding/shared/actions-data.ts +2 -0
  887. package/src/components/onboarding/shared/configColor.ts +72 -0
  888. package/src/components/onboarding/shared/contract.ts +4 -0
  889. package/src/components/onboarding/shared/describe.ts +1 -1
  890. package/src/components/onboarding/shared/mock.ts +2 -0
  891. package/src/components/onboarding/views.ts +8 -0
  892. package/src/index.ts +1 -1
  893. package/src/motion/MotionPlayer.tsx +62 -0
  894. package/src/motion/agent.ts +288 -0
  895. package/src/motion/cat/Cat.tsx +118 -0
  896. package/src/motion/cat/animation.ts +206 -0
  897. package/src/motion/cat/art.generated.ts +44 -0
  898. package/src/motion/cat/config.ts +186 -0
  899. package/src/motion/cat/index.ts +26 -0
  900. package/src/motion/cat/rig.ts +102 -0
  901. package/src/motion/cat/scene.ts +181 -0
  902. package/src/motion/configurable/config.ts +420 -0
  903. package/src/motion/configurable/controls.ts +93 -0
  904. package/src/motion/easing.ts +55 -0
  905. package/src/motion/fit.ts +8 -0
  906. package/src/motion/index.ts +29 -0
  907. package/src/motion/neon/GlowRenderer.tsx +83 -0
  908. package/src/motion/neon/NeonCanvas.tsx +175 -0
  909. package/src/motion/neon/NeonText.tsx +113 -0
  910. package/src/motion/neon/NeonTextFrame.tsx +67 -0
  911. package/src/motion/neon/artwork.ts +95 -0
  912. package/src/motion/neon/audio.ts +162 -0
  913. package/src/motion/neon/config.ts +484 -0
  914. package/src/motion/neon/flicker.ts +225 -0
  915. package/src/motion/neon/fonts.ts +76 -0
  916. package/src/motion/neon/frame.ts +34 -0
  917. package/src/motion/neon/glitch.ts +142 -0
  918. package/src/motion/neon/index.ts +41 -0
  919. package/src/motion/neon/layers.tsx +209 -0
  920. package/src/motion/neon/material.ts +88 -0
  921. package/src/motion/neon/random.ts +40 -0
  922. package/src/motion/neon/scene.ts +610 -0
  923. package/src/motion/neon/synth.ts +188 -0
  924. package/src/motion/neon/typography.ts +102 -0
  925. package/src/motion/neon/wall.ts +157 -0
  926. package/src/motion/paperfold/PaperFold.tsx +45 -0
  927. package/src/motion/paperfold/PaperFoldFrame.tsx +576 -0
  928. package/src/motion/paperfold/PaperFoldPlayer.tsx +80 -0
  929. package/src/motion/paperfold/art.ts +455 -0
  930. package/src/motion/paperfold/config.ts +98 -0
  931. package/src/motion/paperfold/controls.ts +557 -0
  932. package/src/motion/paperfold/engine.ts +852 -0
  933. package/src/motion/paperfold/fonts.ts +21 -0
  934. package/src/motion/paperfold/index.ts +30 -0
  935. package/src/motion/paperfold/manipulate.ts +188 -0
  936. package/src/motion/paperfold/presets.ts +117 -0
  937. package/src/motion/paperfold/template.ts +38 -0
  938. package/src/motion/player.ts +207 -0
  939. package/src/motion/promo/PromoFrame.tsx +501 -0
  940. package/src/motion/promo/PromoShowcasePlayer.tsx +78 -0
  941. package/src/motion/promo/config.ts +479 -0
  942. package/src/motion/promo/controls.ts +643 -0
  943. package/src/motion/promo/easing.ts +36 -0
  944. package/src/motion/promo/engine.ts +587 -0
  945. package/src/motion/promo/fonts.ts +16 -0
  946. package/src/motion/promo/icons.tsx +29 -0
  947. package/src/motion/promo/index.ts +24 -0
  948. package/src/motion/promo/presets.ts +40 -0
  949. package/src/motion/promo/template.ts +36 -0
  950. package/src/motion/replication2/Replication2Player.tsx +115 -0
  951. package/src/motion/replication2/config.ts +323 -0
  952. package/src/motion/replication2/controls.ts +336 -0
  953. package/src/motion/replication2/driver.ts +92 -0
  954. package/src/motion/replication2/easing.ts +88 -0
  955. package/src/motion/replication2/engine.ts +539 -0
  956. package/src/motion/replication2/html.ts +87 -0
  957. package/src/motion/replication2/index.ts +14 -0
  958. package/src/motion/replication2/measure.ts +28 -0
  959. package/src/motion/replication2/metrics.ts +7 -0
  960. package/src/motion/replication2/presets.ts +63 -0
  961. package/src/motion/replication2/riv.ts +4 -0
  962. package/src/motion/replication2/rive-contract.ts +165 -0
  963. package/src/motion/replication2/template.ts +33 -0
  964. package/src/motion/sample.ts +173 -0
  965. package/src/motion/templates/hey-template.ts +1553 -0
  966. package/src/motion/templates/index.ts +17 -0
  967. package/src/motion/templates/word-motion.ts +1166 -0
  968. package/src/motion/types.ts +162 -0
  969. package/src/motion/typesurface/TypeSurfaceCanvas.tsx +73 -0
  970. package/src/motion/typesurface/art.ts +639 -0
  971. package/src/motion/typesurface/config.ts +486 -0
  972. package/src/motion/typesurface/engine.ts +586 -0
  973. package/src/motion/typesurface/fonts.ts +63 -0
  974. package/src/motion/typesurface/index.ts +16 -0
  975. package/src/motion/typesurface/layout.ts +133 -0
  976. package/src/motion/typesurface/ops.ts +196 -0
  977. package/src/motion/typesurface/presets.ts +199 -0
  978. package/src/motion/typesurface/renderer.ts +579 -0
  979. package/src/motion/typesurface/shaders.ts +303 -0
  980. package/src/motion/typesurface/surfaces.ts +223 -0
  981. package/src/motion/typesurface/text.ts +35 -0
  982. package/src/motion/typesurface/timeline.ts +58 -0
  983. package/src/motion/validate.ts +101 -0
  984. package/src/native/RiveReceiptStage.tsx +8 -155
  985. package/src/native/riveReceiptStageFactory.tsx +175 -0
  986. package/src/tokens/stage.ts +6 -0
  987. package/tools/ask/dist/components.mjs +7221 -44
  988. package/tools/ask/mcp.mjs +80 -1
@@ -0,0 +1,225 @@
1
+ import type { NeonAnimationConfig } from './config';
2
+ import { rand, valueNoise } from './random';
3
+
4
+ /**
5
+ * **The flicker controller: tube brightness as a pure function of time.** Not an opacity loop: the
6
+ * brightness is the product of a constant low shimmer and rare, randomly placed electrical events,
7
+ * and each layer responds to it differently.
8
+ *
9
+ * shimmer always on, 95–103 %: two octaves of smooth noise (gas and supply ripple)
10
+ * sag 0.3–0.9 s, down to 85–100 %: a soft, slightly rippled droop (62 % of events)
11
+ * flicker 0.12–0.32 s, two to four quick 20–40 ms blinks to 70–88 % (16 %)
12
+ * dip 80–260 ms, down to 40–80 %: fast fall, one or two stutters (15 %)
13
+ * failure 0.2–0.65 s, down to 20–50 %: the arc chatters on and off, then
14
+ * re-strikes with a brief 3 % overshoot (7 %)
15
+ *
16
+ * After a dip or failure the tube recovers along an exponential tail whose length is set by
17
+ * `flickerRecovery` (0 → ≈ 300 ms, 1 → instant). `flickerRandomness` 0 plays every event at its
18
+ * typical depth and length on an even grid; 1 varies them fully. `flickerMinBrightness` is a floor.
19
+ *
20
+ * Events start at random moments: time is cut into 100 ms slots and each slot starts an event with
21
+ * probability `flickerFrequency × 0.1`. Every decision is a hash of (seed, slot), so there is no
22
+ * loop to notice and any moment can be computed on its own. Triggers (`NeonTrigger`) add events at
23
+ * chosen times — the playground's buttons, or a scripted timeline — just as deterministically.
24
+ *
25
+ * Depths are the brief's ranges at `flickerIntensity` 0.25, scaled linearly by intensity (0 = steady).
26
+ *
27
+ * Layer response (tube dims → core a little → glow → bloom, which lags):
28
+ * tube = b core = b^0.75 (dims less than the tube)
29
+ * glow = mean(b over 50 ms)^1.3 bloom = mean(b over 120 ms, delayed)^1.8
30
+ */
31
+ export type FlickerKind = 'sag' | 'flicker' | 'dip' | 'failure';
32
+ export const FLICKER_KINDS: readonly FlickerKind[] = ['sag', 'flicker', 'dip', 'failure'];
33
+ export type FlickerEvent = { kind: FlickerKind; start: number; duration: number; depth: number; slot: number; forced?: boolean };
34
+ export type FlickerLevels = { brightness: number; tube: number; core: number; glow: number; bloom: number; event: FlickerKind | null };
35
+
36
+ /**
37
+ * An event placed on purpose, at `at` ms of the caller's clock (the same clock as `timeMs`).
38
+ * `normal` holds the sign steady for `NORMAL_HOLD_MS` and cancels anything already playing.
39
+ */
40
+ export type NeonTriggerKind = FlickerKind | 'glitch' | 'normal';
41
+ export type NeonTrigger = { kind: NeonTriggerKind; at: number };
42
+ export const NORMAL_HOLD_MS = 3000;
43
+
44
+ const SLOT = 100;
45
+ const MAX_DURATION = 650;
46
+ const OVERSHOOT = 160;
47
+ const SALT = { starts: 11, offset: 12, kind: 13, duration: 14, depth: 15, shape: 16 };
48
+ const RANGES: Record<FlickerKind, { duration: [number, number]; depth: [number, number] }> = {
49
+ sag: { duration: [300, 900], depth: [0.03, 0.15] },
50
+ flicker: { duration: [120, 320], depth: [0.12, 0.3] },
51
+ dip: { duration: [80, 260], depth: [0.2, 0.6] },
52
+ failure: { duration: [200, MAX_DURATION], depth: [0.5, 0.8] },
53
+ };
54
+
55
+ /** The reference intensity at which the brief's ranges play exactly. */
56
+ export const FLICKER_REFERENCE_INTENSITY = 0.25;
57
+
58
+ /** A value in [lo, hi]: the middle at randomness 0, anywhere at randomness 1. */
59
+ function spread([lo, hi]: [number, number], u: number, randomness: number): number {
60
+ const mid = (lo + hi) / 2;
61
+ return mid + (u - 0.5) * (hi - lo) * Math.max(0, Math.min(1, randomness));
62
+ }
63
+
64
+ /** The recovery tail's time constant, ms. */
65
+ const tailTau = (a: NeonAnimationConfig) => 12 + 290 * (1 - Math.max(0, Math.min(1, a.flickerRecovery ?? 0.7)));
66
+ const hasTail = (k: FlickerKind) => k === 'dip' || k === 'failure';
67
+ /** How long after its end an event still pulls (tail and overshoot). */
68
+ const afterglow = (a: NeonAnimationConfig, e: FlickerEvent) => (hasTail(e.kind) ? Math.max(tailTau(a) * 5, e.kind === 'failure' ? OVERSHOOT : 0) : 0);
69
+
70
+ function makeEvent(a: NeonAnimationConfig, kind: FlickerKind, start: number, slot: number, forced = false): FlickerEvent {
71
+ const r = a.flickerRandomness ?? 0.6;
72
+ const range = RANGES[kind];
73
+ return {
74
+ kind, start, slot, forced,
75
+ duration: spread(range.duration, rand(a.seed, slot, SALT.duration), r),
76
+ depth: spread(range.depth, rand(a.seed, slot, SALT.depth), r),
77
+ };
78
+ }
79
+
80
+ /** The event that starts in `slot`, if any. */
81
+ export function flickerEventInSlot(a: NeonAnimationConfig, slot: number): FlickerEvent | null {
82
+ const p = Math.min(0.9, Math.max(0, a.flickerFrequency) * (SLOT / 1000));
83
+ if (p <= 0 || rand(a.seed, slot, SALT.starts) >= p) return null;
84
+ const jitter = 0.5 + (rand(a.seed, slot, SALT.offset) - 0.5) * Math.max(0, Math.min(1, a.flickerRandomness ?? 0.6));
85
+ const k = rand(a.seed, slot, SALT.kind);
86
+ const kind: FlickerKind = k < 0.62 ? 'sag' : k < 0.78 ? 'flicker' : k < 0.93 ? 'dip' : 'failure';
87
+ return makeEvent(a, kind, slot * SLOT + jitter * SLOT, slot);
88
+ }
89
+
90
+ /** Trigger events for the flicker, in flicker time (`toFlicker` maps the caller's clock). */
91
+ function forcedEvents(a: NeonAnimationConfig, triggers: readonly NeonTrigger[] | undefined, toFlicker: (ms: number) => number): FlickerEvent[] {
92
+ if (!triggers?.length) return [];
93
+ return triggers.flatMap((tr, i) => (tr.kind === 'glitch' || tr.kind === 'normal' ? [] : [makeEvent(a, tr.kind, toFlicker(tr.at), -1_000_003 - i * 7, true)]));
94
+ }
95
+
96
+ /** The latest `normal` hold covering flicker time `t`, as [start, end] in flicker time. */
97
+ function normalHold(triggers: readonly NeonTrigger[] | undefined, toFlicker: (ms: number) => number, t: number): [number, number] | null {
98
+ let hold: [number, number] | null = null;
99
+ for (const tr of triggers ?? []) {
100
+ if (tr.kind !== 'normal') continue;
101
+ const s = toFlicker(tr.at);
102
+ const e = toFlicker(tr.at + NORMAL_HOLD_MS);
103
+ if (t >= s && t < e && (!hold || s > hold[0])) hold = [s, e];
104
+ }
105
+ return hold;
106
+ }
107
+
108
+ /** Every event whose effect (including its recovery tail) covers flicker time `t`. */
109
+ export function flickerEventsAt(a: NeonAnimationConfig, t: number, triggers?: readonly NeonTrigger[], toFlicker: (ms: number) => number = (ms) => ms): FlickerEvent[] {
110
+ const hold = normalHold(triggers, toFlicker, t);
111
+ const covers = (e: FlickerEvent) => t >= e.start && t < e.start + e.duration + afterglow(a, e) && (!hold || e.start >= hold[0]);
112
+ const out: FlickerEvent[] = [];
113
+ if (!hold) {
114
+ const back = Math.ceil((MAX_DURATION + Math.max(OVERSHOOT, tailTau(a) * 5)) / SLOT) + 1;
115
+ const now = Math.floor(t / SLOT);
116
+ for (let s = now - back; s <= now; s++) {
117
+ const e = flickerEventInSlot(a, s);
118
+ if (e && covers(e)) out.push(e);
119
+ }
120
+ }
121
+ for (const e of forcedEvents(a, triggers, toFlicker)) if (covers(e)) out.push(e);
122
+ return out;
123
+ }
124
+
125
+ const smooth = (x: number) => (x <= 0 ? 0 : x >= 1 ? 1 : x * x * (3 - 2 * x));
126
+
127
+ /** How far (0…1 of its depth) event `e` pulls the brightness down at `t`; negative is an overshoot. */
128
+ function eventPull(a: NeonAnimationConfig, e: FlickerEvent, t: number): number {
129
+ const u = (t - e.start) / e.duration;
130
+ if (u >= 1) {
131
+ if (!hasTail(e.kind)) return 0;
132
+ const after = t - e.start - e.duration;
133
+ const tail = (e.kind === 'failure' ? 0.5 : 0.35) * Math.exp(-after / tailTau(a));
134
+ const over = e.kind === 'failure' && after < OVERSHOOT ? (0.03 / e.depth) * Math.sin(Math.PI * (after / OVERSHOOT)) : 0;
135
+ return tail - over;
136
+ }
137
+ if (e.kind === 'sag') {
138
+ const env = Math.pow(Math.sin(Math.PI * Math.min(1, Math.max(0, u))), 1.5);
139
+ return env * (0.85 + 0.15 * Math.sin(u * Math.PI * 6));
140
+ }
141
+ if (e.kind === 'flicker') {
142
+ /* Two to four quick blinks: 20–40 ms chunks alternating off and on. */
143
+ const len = 20 + 20 * rand(a.seed, e.slot, SALT.shape, 998);
144
+ const chunk = Math.floor((t - e.start) / len);
145
+ return chunk % 2 === 0 ? 0.6 + 0.4 * rand(a.seed, e.slot, SALT.shape, chunk) : 0.05;
146
+ }
147
+ if (e.kind === 'dip') {
148
+ if (u < 0.15) return smooth(u / 0.15);
149
+ if (u > 0.7) return 1 - smooth((u - 0.7) / 0.3) * 0.65;
150
+ /* One or two stutters: 25 ms chunks that partly recover. */
151
+ const chunk = Math.floor((t - e.start) / 25);
152
+ return rand(a.seed, e.slot, SALT.shape, chunk) < 0.3 ? 0.55 : 1;
153
+ }
154
+ /* failure */
155
+ if (u < 0.06) return smooth(u / 0.06);
156
+ if (u > 0.88) return 1 - smooth((u - 0.88) / 0.12) * 0.5;
157
+ /* The arc chatters: 16–33 ms chunks, each either out (full depth) or half re-struck. */
158
+ const chunk = Math.floor((t - e.start) / (16 + 17 * rand(a.seed, e.slot, SALT.shape, 999)));
159
+ const r = rand(a.seed, e.slot, SALT.shape, chunk);
160
+ return r < 0.55 ? 1 : r < 0.85 ? 0.45 : 0.15;
161
+ }
162
+
163
+ /** Tube brightness at flicker time `t`. 1 is nominal; it can reach ~1.03. */
164
+ export function tubeBrightness(a: NeonAnimationConfig, t: number, triggers?: readonly NeonTrigger[], toFlicker?: (ms: number) => number): number {
165
+ const k = Math.max(0, a.flickerIntensity) / FLICKER_REFERENCE_INTENSITY;
166
+ const floor = Math.max(0, Math.min(1, a.flickerMinBrightness ?? 0.05));
167
+ const forced = !!triggers?.some((tr) => tr.kind !== 'glitch');
168
+ if ((!a.flickerEnabled || k === 0) && !forced) return 1;
169
+ /* Triggers always play at least at the reference depth, so a button press is visible even with a gentle sign. */
170
+ const kEvents = Math.max(k, forced ? 1 : 0);
171
+ const amp = a.flickerEnabled ? 0.04 * Math.min(k, 1.5) * (0.5 + 0.833 * Math.max(0, Math.min(1, a.flickerRandomness ?? 0.6))) : 0;
172
+ let b = 1 - amp * 0.25 + amp * (0.6 * valueNoise(a.seed, t / 140, 1) + 0.4 * valueNoise(a.seed, t / 43, 2));
173
+ for (const e of flickerEventsAt(a, t, triggers, toFlicker)) {
174
+ if (!e.forced && (!a.flickerEnabled || k === 0)) continue;
175
+ const depth = Math.min(0.95, e.depth * (e.forced ? kEvents : k));
176
+ b *= 1 - depth * eventPull(a, e, t);
177
+ }
178
+ return Math.max(floor, Math.max(0.02, b));
179
+ }
180
+
181
+ /** The flicker's time: animation time × `flickerSpeed`. */
182
+ export const flickerTime = (a: NeonAnimationConfig, t: number) => t * Math.max(0.01, a.flickerSpeed);
183
+
184
+ /**
185
+ * Every layer's brightness at animation time `t` (ms, already × speed). `toFlicker` maps a trigger's
186
+ * clock time to flicker time; `neonFrame` supplies it.
187
+ */
188
+ export function flickerLevels(a: NeonAnimationConfig, t: number, triggers?: readonly NeonTrigger[], toFlicker?: (ms: number) => number): FlickerLevels {
189
+ const live = a.enabled && (a.flickerEnabled && a.flickerIntensity > 0 || !!triggers?.some((tr) => tr.kind !== 'glitch' && tr.kind !== 'normal'));
190
+ if (!live) return { brightness: 1, tube: 1, core: 1, glow: 1, bloom: 1, event: null };
191
+ const ft = flickerTime(a, t);
192
+ const map = toFlicker ?? ((ms: number) => flickerTime(a, ms));
193
+ const at = (dt: number) => tubeBrightness(a, ft - dt, triggers, map);
194
+ const b = at(0);
195
+ const glow = (b + at(25) + at(50)) / 3;
196
+ const bloom = (at(20) + at(45) + at(70) + at(95) + at(120)) / 5;
197
+ const events = flickerEventsAt(a, ft, triggers, map).filter((e) => ft < e.start + e.duration);
198
+ const rank: Record<FlickerKind, number> = { failure: 4, dip: 3, flicker: 2, sag: 1 };
199
+ const worst = events.sort((x, y) => rank[y.kind] - rank[x.kind] || y.depth - x.depth)[0];
200
+ return { brightness: b, tube: b, core: Math.pow(b, 0.75), glow: Math.pow(glow, 1.3), bloom: Math.pow(bloom, 1.8), event: worst?.kind ?? null };
201
+ }
202
+
203
+ /**
204
+ * **Event starts and ends between two flicker times**, for sound: each flicker event's start, and
205
+ * each dip's or failure's end (the re-strike). Ordered by time.
206
+ */
207
+ export type FlickerCue = { kind: FlickerKind | 'restore'; at: number; depth: number };
208
+ export function flickerCuesBetween(a: NeonAnimationConfig, t0: number, t1: number, triggers?: readonly NeonTrigger[], toFlicker: (ms: number) => number = (ms) => ms): FlickerCue[] {
209
+ if (!(t1 > t0)) return [];
210
+ const out: FlickerCue[] = [];
211
+ const push = (e: FlickerEvent) => {
212
+ if (e.start >= t0 && e.start < t1) out.push({ kind: e.kind, at: e.start, depth: e.depth });
213
+ const end = e.start + e.duration;
214
+ if (hasTail(e.kind) && end >= t0 && end < t1) out.push({ kind: 'restore', at: end, depth: e.depth });
215
+ };
216
+ const hold = (t: number) => normalHold(triggers, toFlicker, t);
217
+ if (a.flickerEnabled && a.flickerIntensity > 0 && t1 - t0 < 120_000) {
218
+ for (let s = Math.floor((t0 - MAX_DURATION) / SLOT); s <= Math.floor(t1 / SLOT); s++) {
219
+ const e = flickerEventInSlot(a, s);
220
+ if (e && !hold(e.start)) push(e);
221
+ }
222
+ }
223
+ for (const e of forcedEvents(a, triggers, toFlicker)) push(e);
224
+ return out.sort((x, y) => x.at - y.at);
225
+ }
@@ -0,0 +1,76 @@
1
+ import type { NeonConstruction } from './config';
2
+
3
+ /**
4
+ * **Fonts that suit neon, by name.** Every entry is an open-licence (OFL) Google Font, so an agent
5
+ * can say "Orbitron" and a page can load exactly that. Each carries the construction and weight it
6
+ * reads best in: bold and display faces as `outline` tubes, thin and rounded faces as `monoline`.
7
+ * Nothing here loads a font: the page does, with `neonGoogleFontsUrl`.
8
+ */
9
+ export type NeonFontCategory =
10
+ | 'neon tube' | 'retro' | 'condensed' | 'geometric' | 'rounded' | 'bold' | 'thin' | 'futuristic'
11
+ | 'handwritten' | 'display' | 'monospace' | 'signage' | 'industrial' | 'arcade' | 'elegant' | 'system';
12
+
13
+ export type NeonFont = {
14
+ id: string;
15
+ name: string;
16
+ category: NeonFontCategory;
17
+ /** The CSS font-family list (the named face first, then sensible fallbacks). */
18
+ family: string;
19
+ /** The Google Fonts `family=` value that loads it (null: a system face). */
20
+ google: string | null;
21
+ weight: number;
22
+ construction: NeonConstruction;
23
+ /** Tube width as a fraction of the font size, for this face. */
24
+ stroke: number;
25
+ };
26
+
27
+ const f = (id: string, name: string, category: NeonFontCategory, fallback: string, google: string | null, weight: number, construction: NeonConstruction, stroke: number): NeonFont =>
28
+ ({ id, name, category, family: google ? `'${name}', ${fallback}` : fallback, google, weight, construction, stroke });
29
+
30
+ export const NEON_FONTS: NeonFont[] = [
31
+ f('tilt-neon', 'Tilt Neon', 'neon tube', 'Quicksand, sans-serif', 'Tilt+Neon', 400, 'monoline', 0.04),
32
+ f('bebas-neue', 'Bebas Neue', 'condensed', "Oswald, 'Arial Narrow', sans-serif", 'Bebas+Neue', 400, 'outline', 0.033),
33
+ f('anton', 'Anton', 'bold', "'Arial Narrow', Impact, sans-serif", 'Anton', 400, 'outline', 0.03),
34
+ f('oswald', 'Oswald', 'condensed', "'Arial Narrow', 'Helvetica Neue', Arial, sans-serif", 'Oswald:wght@300;400;500;600;700', 500, 'outline', 0.036),
35
+ f('space-grotesk', 'Space Grotesk', 'geometric', "'Helvetica Neue', Arial, sans-serif", 'Space+Grotesk:wght@400;500;700', 500, 'outline', 0.033),
36
+ f('orbitron', 'Orbitron', 'futuristic', "'Eurostile', sans-serif", 'Orbitron:wght@400;600;800', 600, 'outline', 0.03),
37
+ f('audiowide', 'Audiowide', 'futuristic', 'sans-serif', 'Audiowide', 400, 'outline', 0.03),
38
+ f('russo-one', 'Russo One', 'signage', "Impact, 'Arial Black', sans-serif", 'Russo+One', 400, 'outline', 0.03),
39
+ f('rajdhani', 'Rajdhani', 'industrial', "'Arial Narrow', sans-serif", 'Rajdhani:wght@500;600;700', 600, 'outline', 0.033),
40
+ f('exo-2', 'Exo 2', 'futuristic', 'sans-serif', 'Exo+2:wght@300;500;700', 500, 'outline', 0.033),
41
+ f('montserrat', 'Montserrat', 'geometric', "'Helvetica Neue', Arial, sans-serif", 'Montserrat:wght@300;500;700', 500, 'outline', 0.033),
42
+ f('inter', 'Inter', 'geometric', "system-ui, 'Helvetica Neue', Arial, sans-serif", 'Inter:wght@300;500;700', 500, 'outline', 0.033),
43
+ f('archivo', 'Archivo', 'signage', "'Helvetica Neue', Arial, sans-serif", 'Archivo:wght@400;600;800', 600, 'outline', 0.033),
44
+ f('barlow-condensed', 'Barlow Condensed', 'condensed', "'Arial Narrow', sans-serif", 'Barlow+Condensed:wght@400;600', 600, 'outline', 0.034),
45
+ f('sora', 'Sora', 'geometric', 'sans-serif', 'Sora:wght@300;500;700', 500, 'outline', 0.033),
46
+ f('raleway', 'Raleway', 'thin', "'Helvetica Neue', sans-serif", 'Raleway:wght@200;300;500', 300, 'monoline', 0.03),
47
+ f('press-start-2p', 'Press Start 2P', 'arcade', "'Courier New', monospace", 'Press+Start+2P', 400, 'outline', 0.03),
48
+ f('pacifico', 'Pacifico', 'handwritten', "'Brush Script MT', cursive", 'Pacifico', 400, 'outline', 0.026),
49
+ f('dm-sans', 'DM Sans', 'rounded', "'Helvetica Neue', Arial, sans-serif", 'DM+Sans:wght@300;500;700', 500, 'outline', 0.033),
50
+ f('quicksand', 'Quicksand', 'rounded', "'Arial Rounded MT Bold', 'Helvetica Neue', Arial, sans-serif", 'Quicksand:wght@300;400;500;600;700', 500, 'monoline', 0.045),
51
+ f('sacramento', 'Sacramento', 'handwritten', "'Snell Roundhand', 'Brush Script MT', cursive", 'Sacramento', 400, 'monoline', 0.03),
52
+ f('righteous', 'Righteous', 'retro', 'sans-serif', 'Righteous', 400, 'outline', 0.03),
53
+ f('space-mono', 'Space Mono', 'monospace', "'Courier New', monospace", 'Space+Mono:wght@400;700', 400, 'monoline', 0.03),
54
+ f('great-vibes', 'Great Vibes', 'elegant', "'Snell Roundhand', cursive", 'Great+Vibes', 400, 'monoline', 0.022),
55
+ f('black-ops-one', 'Black Ops One', 'industrial', "Impact, sans-serif", 'Black+Ops+One', 400, 'outline', 0.026),
56
+ f('monoton', 'Monoton', 'display', 'sans-serif', 'Monoton', 400, 'monoline', 0.008),
57
+ f('system', 'System', 'system', "system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif", null, 600, 'outline', 0.033),
58
+ ];
59
+
60
+ /** The monochrome emoji face: vector outlines, so an emoji can be bent into a tube like a letter. */
61
+ export const NEON_EMOJI_FONT: NeonFont = f('noto-emoji', 'Noto Emoji', 'display', 'sans-serif', 'Noto+Emoji:wght@400;500;700', 500, 'outline', 0.03);
62
+
63
+ /** Find a font by id, name or family, case-insensitively ("Orbitron", "orbitron", "Bebas"). */
64
+ export function findNeonFont(query: string): NeonFont | undefined {
65
+ const q = query.trim().toLowerCase().replace(/[-_]+/g, ' ');
66
+ if (!q) return undefined;
67
+ return NEON_FONTS.find((x) => x.id.replace(/-/g, ' ') === q || x.name.toLowerCase() === q)
68
+ ?? NEON_FONTS.find((x) => x.name.toLowerCase().startsWith(q) || x.family.toLowerCase().startsWith(`'${q}`))
69
+ ?? NEON_FONTS.find((x) => x.name.toLowerCase().includes(q));
70
+ }
71
+
72
+ /** One Google Fonts stylesheet URL for these fonts (default: all of them, plus Noto Emoji). */
73
+ export function neonGoogleFontsUrl(fonts: NeonFont[] = [...NEON_FONTS, NEON_EMOJI_FONT]): string {
74
+ const families = [...new Set(fonts.map((x) => x.google).filter((g): g is string => !!g))];
75
+ return `https://fonts.googleapis.com/css2?${families.map((g) => `family=${g}`).join('&')}&display=swap`;
76
+ }
@@ -0,0 +1,34 @@
1
+ import type { NeonTextConfig } from './config';
2
+ import { flickerLevels, type FlickerLevels, type NeonTrigger } from './flicker';
3
+ import { glitchAt, type GlitchState } from './glitch';
4
+
5
+ /**
6
+ * **One frame of the sign's state** — what the renderer needs from the animation at `timeMs`:
7
+ * each layer's brightness (flicker) and the glitch, if one is playing. Pure: the same config, time
8
+ * and triggers always give the same frame, so the caller owns the clock (Remotion passes
9
+ * frame / fps × 1000) and a timeline can be scrubbed backwards and forwards.
10
+ *
11
+ * `triggers` are events placed on purpose at clock times (`timeMs` units): a button press, or a
12
+ * scripted moment. They play whatever the frequencies say.
13
+ */
14
+ export type NeonFrame = { timeMs: number; levels: FlickerLevels; glitch: GlitchState | null };
15
+
16
+ export const STEADY_LEVELS: FlickerLevels = { brightness: 1, tube: 1, core: 1, glow: 1, bloom: 1, event: null };
17
+
18
+ type Timed = Pick<NeonTextConfig, 'animation'>;
19
+
20
+ export function neonFrame(config: Timed, timeMs: number, triggers?: readonly NeonTrigger[]): NeonFrame {
21
+ const a = config.animation;
22
+ if (!a.enabled || !Number.isFinite(timeMs)) return { timeMs, levels: STEADY_LEVELS, glitch: null };
23
+ const speed = Math.max(0, a.speed);
24
+ const fs = Math.max(0.01, a.flickerSpeed);
25
+ const t = timeMs * speed;
26
+ const glitch = glitchAt(a, t, triggers, (ms) => ms * speed);
27
+ const levels = flickerLevels(a, t, triggers, (ms) => ms * speed * fs);
28
+ /* A glitch that loses brightness pulls the tube and its light down with it. */
29
+ if (glitch && glitch.keep < 1) {
30
+ const k = glitch.keep;
31
+ return { timeMs, levels: { ...levels, tube: levels.tube * k, core: levels.core * (0.5 + 0.5 * k), glow: levels.glow * k, bloom: levels.bloom * (0.7 + 0.3 * k) }, glitch };
32
+ }
33
+ return { timeMs, levels, glitch };
34
+ }
@@ -0,0 +1,142 @@
1
+ import type { NeonAnimationConfig } from './config';
2
+ import { NORMAL_HOLD_MS, type NeonTrigger } from './flicker';
3
+ import { between, rand } from './random';
4
+
5
+ /**
6
+ * **The glitch controller: independent of the flicker, and silent most of the time.** Time is cut
7
+ * into 250 ms slots; each starts a glitch with probability `glitchFrequency × 0.25`, lasting about
8
+ * `glitchDuration` (×0.6–1.4). Inside a glitch the picture changes in 45 ms steps (a glitch steps; it
9
+ * doesn't ease), and each step draws a few of:
10
+ *
11
+ * - a small horizontal shift of the whole sign (≤ 0.035 em at intensity 1)
12
+ * - one to three horizontal slices shifted sideways (≤ 0.09 em), some dimmed
13
+ * - an RGB split: red and cyan ghosts of the tube, either side (≤ 0.025 em)
14
+ * - the glow and bloom slipping behind the tube (glow separation)
15
+ * - one thin scanline band torn further than the slices
16
+ * - a partial brightness loss
17
+ *
18
+ * About one step in four is quiet, so a glitch stutters. Everything scales with `glitchIntensity`;
19
+ * the caps keep the words readable. `glitchDisplacement`, `glitchRgbSplit`, `glitchSlices` and
20
+ * `glitchGlowSeparation` scale each part (0…2). Offsets are in em (× fontSize at render).
21
+ *
22
+ * A `glitch` trigger plays one glitch at its time, whatever the frequency; a `normal` trigger
23
+ * silences random glitches for `NORMAL_HOLD_MS`.
24
+ */
25
+ export type GlitchSlice = {
26
+ /** Top and height as fractions of the letters' box. */
27
+ y: number;
28
+ h: number;
29
+ /** Sideways shift, em. */
30
+ dx: number;
31
+ /** Brightness kept, 0…1. */
32
+ keep: number;
33
+ };
34
+ export type GlitchState = {
35
+ /** Whole-sign shift, em. */
36
+ shiftX: number;
37
+ slices: GlitchSlice[];
38
+ /** RGB ghost offset, em (0 → none). */
39
+ rgbSplit: number;
40
+ /** Glow and bloom offset relative to the tube, em. */
41
+ glowShiftX: number;
42
+ /** Brightness kept by the whole sign, 0…1. */
43
+ keep: number;
44
+ /** 0…1 through the glitch. */
45
+ progress: number;
46
+ };
47
+
48
+ const SLOT = 250;
49
+ const STEP = 45;
50
+ const SALT = { starts: 21, offset: 22, duration: 23, step: 24 };
51
+
52
+ export type GlitchEvent = { start: number; duration: number; slot: number; forced?: boolean };
53
+
54
+ export function glitchEventInSlot(a: NeonAnimationConfig, slot: number): GlitchEvent | null {
55
+ const p = Math.min(0.9, Math.max(0, a.glitchFrequency) * (SLOT / 1000));
56
+ if (p <= 0 || rand(a.seed, slot, SALT.starts) >= p) return null;
57
+ return {
58
+ start: slot * SLOT + rand(a.seed, slot, SALT.offset) * SLOT,
59
+ duration: Math.max(20, a.glitchDuration) * between(0.6, 1.4, a.seed, slot, SALT.duration),
60
+ slot,
61
+ };
62
+ }
63
+
64
+ /**
65
+ * The glitch playing at animation time `t`, if any. `toAnim` maps a trigger's clock time to
66
+ * animation time (× speed); `neonFrame` supplies it.
67
+ */
68
+ export function glitchEventAt(a: NeonAnimationConfig, t: number, triggers?: readonly NeonTrigger[], toAnim: (ms: number) => number = (ms) => ms): GlitchEvent | null {
69
+ let forced: GlitchEvent | null = null;
70
+ let hold = false;
71
+ (triggers ?? []).forEach((tr, i) => {
72
+ const s = toAnim(tr.at);
73
+ if (tr.kind === 'normal' && t >= s && t < toAnim(tr.at + NORMAL_HOLD_MS)) hold = true;
74
+ if (tr.kind !== 'glitch') return;
75
+ const e = { start: s, duration: Math.max(60, a.glitchDuration) * 1.2, slot: -2_000_017 - i * 11, forced: true };
76
+ if (t >= e.start && t < e.start + e.duration && (!forced || e.start > forced.start)) forced = e;
77
+ });
78
+ if (forced) return forced;
79
+ if (hold) return null;
80
+ const now = Math.floor(t / SLOT);
81
+ const back = Math.ceil((Math.max(20, a.glitchDuration) * 1.4) / SLOT) + 1;
82
+ for (let s = now; s >= now - back; s--) {
83
+ const e = glitchEventInSlot(a, s);
84
+ if (e && t >= e.start && t < e.start + e.duration) return e;
85
+ }
86
+ return null;
87
+ }
88
+
89
+ /** The glitch at time `t` (ms of animation time), or null — which is almost always. */
90
+ export function glitchAt(a: NeonAnimationConfig, t: number, triggers?: readonly NeonTrigger[], toAnim?: (ms: number) => number): GlitchState | null {
91
+ if (!a.enabled) return null;
92
+ const random = a.glitchEnabled && a.glitchIntensity > 0;
93
+ const hasForced = !!triggers?.some((tr) => tr.kind === 'glitch');
94
+ if (!random && !hasForced) return null;
95
+ const e = glitchEventAt(a, t, triggers, toAnim);
96
+ if (!e || (!e.forced && !random)) return null;
97
+ /* A triggered glitch is always visible, even on a sign set to glitch gently. */
98
+ const I = Math.min(1, Math.max(e.forced ? 0.5 : 0, Math.max(0, a.glitchIntensity)));
99
+ const step = Math.floor((t - e.start) / STEP);
100
+ const r = (salt: number) => rand(a.seed, e.slot, SALT.step + salt, step);
101
+ const progress = (t - e.start) / e.duration;
102
+ if (r(0) < 0.25) return { shiftX: 0, slices: [], rgbSplit: 0, glowShiftX: 0, keep: 1, progress };
103
+ const sign = (salt: number) => (r(salt) < 0.5 ? -1 : 1);
104
+ const k = (v: number | undefined) => Math.max(0, Math.min(2, v ?? 1));
105
+ const [kShift, kRgb, kSlice, kGlow] = [k(a.glitchDisplacement), k(a.glitchRgbSplit), k(a.glitchSlices), k(a.glitchGlowSeparation)];
106
+ const shiftX = sign(1) * r(2) * 0.035 * I * kShift;
107
+ const count = r(3) < 0.35 ? 0 : 1 + Math.floor(r(4) * (1 + 2 * I));
108
+ const slices: GlitchSlice[] = [];
109
+ for (let i = 0; i < count; i++) {
110
+ const h = 0.06 + r(10 + i) * 0.16;
111
+ slices.push({ y: r(20 + i) * (1 - h), h, dx: sign(30 + i) * (0.02 + r(40 + i) * 0.07) * I * kSlice, keep: r(50 + i) < 0.4 ? 0.45 + 0.4 * r(60 + i) : 1 });
112
+ }
113
+ /* A scanline: one thin band, torn further. */
114
+ if (r(5) < 0.45) slices.push({ y: r(6) * 0.97, h: 0.012 + r(7) * 0.02, dx: sign(8) * (0.06 + 0.06 * r(9)) * I * kSlice, keep: 0.8 });
115
+ return {
116
+ shiftX,
117
+ slices,
118
+ rgbSplit: r(70) < 0.6 ? (0.008 + 0.017 * r(71)) * I * kRgb : 0,
119
+ glowShiftX: r(72) < 0.5 ? (-shiftX * 0.8 - sign(73) * 0.01 * I) * kGlow : 0,
120
+ keep: 1 - 0.3 * I * r(74),
121
+ progress,
122
+ };
123
+ }
124
+
125
+ /** Glitch starts between two animation times (random and triggered), for sound. */
126
+ export function glitchCuesBetween(a: NeonAnimationConfig, t0: number, t1: number, triggers?: readonly NeonTrigger[], toAnim: (ms: number) => number = (ms) => ms): { at: number; duration: number }[] {
127
+ if (!(t1 > t0) || !a.enabled) return [];
128
+ const out: { at: number; duration: number }[] = [];
129
+ const held = (t: number) => (triggers ?? []).some((tr) => tr.kind === 'normal' && t >= toAnim(tr.at) && t < toAnim(tr.at + NORMAL_HOLD_MS));
130
+ if (a.glitchEnabled && a.glitchIntensity > 0 && t1 - t0 < 120_000) {
131
+ for (let s = Math.floor(t0 / SLOT); s <= Math.floor(t1 / SLOT); s++) {
132
+ const e = glitchEventInSlot(a, s);
133
+ if (e && e.start >= t0 && e.start < t1 && !held(e.start)) out.push({ at: e.start, duration: e.duration });
134
+ }
135
+ }
136
+ for (const tr of triggers ?? []) {
137
+ if (tr.kind !== 'glitch') continue;
138
+ const s = toAnim(tr.at);
139
+ if (s >= t0 && s < t1) out.push({ at: s, duration: Math.max(60, a.glitchDuration) * 1.2 });
140
+ }
141
+ return out.sort((x, y) => x.at - y.at);
142
+ }
@@ -0,0 +1,41 @@
1
+ /**
2
+ * **Neon text** — a reusable neon-sign typography primitive. Any text, any loaded font, any colour;
3
+ * five light layers with a sharp tube and core; seeded electrical flicker and occasional glitches.
4
+ * Reference: Vecteezy 7356951 (typography only). `docs/NEON-TEXT.md`.
5
+ *
6
+ * text → Typography → NeonMaterial → FlickerController + GlitchController → GlowRenderer
7
+ */
8
+ export {
9
+ DEFAULT_NEON_CONFIG, NEON_COLOR_PRESETS, NEON_TEXT_PRESETS, NEON_CONTROLS, NEON_CONSTRUCTIONS, NEON_ALIGNS, NEON_SHORTHAND_KEYS, MAX_NEON_TEXT_LENGTH,
10
+ resolveNeonConfig, sanitizeNeonConfig, validateNeonConfig, shorthandToConfig, deriveNeonPalette, neonColors, isHexColor, mixHex, getPath, setPath,
11
+ type NeonTextConfig, type NeonTextConfigInput, type NeonTextShorthand, type NeonTypography, type NeonMaterialConfig, type NeonAnimationConfig,
12
+ type NeonShadow, type NeonConstruction, type NeonAlign, type NeonColorPreset, type NeonColorPresetId, type NeonTextPresetId, type NeonControl,
13
+ type NeonConfigError,
14
+ } from './config';
15
+ export { layoutText, textRows, estimateTextWidth, fontShorthand, type NeonLayout, type NeonRow, type TextMeasurer } from './typography';
16
+ export { resolveMaterial, materialPad, NEON_LAYERS, type NeonMaterial, type NeonLayerId } from './material';
17
+ export { flickerLevels, tubeBrightness, flickerEventsAt, flickerEventInSlot, FLICKER_REFERENCE_INTENSITY, type FlickerLevels, type FlickerEvent, type FlickerKind } from './flicker';
18
+ export { glitchAt, glitchEventAt, glitchEventInSlot, type GlitchState, type GlitchSlice, type GlitchEvent } from './glitch';
19
+ export { neonFrame, STEADY_LEVELS, type NeonFrame } from './frame';
20
+ export { GlowRenderer, type GlowRendererProps } from './GlowRenderer';
21
+ export { NeonTextFrame, type NeonTextFrameProps } from './NeonTextFrame';
22
+ export { NeonText, createCanvasMeasurer, type NeonTextProps } from './NeonText';
23
+ export { NeonLayers, NEON_LAYER_ORDER, type NeonLayersProps, type NeonSource } from './layers';
24
+ export { NeonTextGlyphs } from './GlowRenderer';
25
+ export { flickerCuesBetween, flickerTime, FLICKER_KINDS, NORMAL_HOLD_MS, type NeonTrigger, type NeonTriggerKind, type FlickerCue } from './flicker';
26
+ export { glitchCuesBetween } from './glitch';
27
+ export { NEON_FONTS, NEON_EMOJI_FONT, findNeonFont, neonGoogleFontsUrl, type NeonFont, type NeonFontCategory } from './fonts';
28
+ export { parseSvgArtwork, NEON_ARTWORK_LIBRARY, type ParsedSvg, type SvgNode, type SvgTag } from './artwork';
29
+ export { DEFAULT_NEON_WALL, neonWallSvg, neonWallMaskSvg, wallBricks, svgDataUrl, type NeonWallConfig, type Brick } from './wall';
30
+ export {
31
+ DEFAULT_NEON_SCENE, DEFAULT_NEON_ELEMENTS, DEFAULT_NEON_AUDIO, NEON_SCENE_PRESETS, NEON_NAMED_COLORS, NEON_FLICKER_LEVELS, NEON_GLITCH_LEVELS,
32
+ resolveNeonScene, resolveNeonElement, validateNeonScene, validateNeonElement, sanitizeNeonScene, elementGeometry, elementTriggers, neonSceneCues,
33
+ createNeonScene, addNeonElement, neonElementFromSpec, neonColor, neonSceneFromText, emojiText,
34
+ type NeonScene, type NeonSceneInput, type NeonElement, type NeonElementInput, type NeonElementType, type NeonTextElement, type NeonEmojiElement,
35
+ type NeonArtworkElement, type NeonArtworkSource, type NeonAudioConfig, type NeonTimeline, type SceneTrigger, type NeonElementGeometry, type NeonCue,
36
+ type NeonCueKind, type NeonScenePreset, type NeonElementSpec, type NeonElementCommon,
37
+ } from './scene';
38
+ export { NeonCanvas, neonSceneState, neonWallImages, type NeonCanvasProps, type NeonElementState } from './NeonCanvas';
39
+ export { synthesizeNeonSound, encodeWav, NEON_SOUND_IDS, NEON_SOUND_SECONDS, type NeonSoundId } from './synth';
40
+ export { NeonAudioEngine, type NeonAudioState } from './audio';
41
+ export { type NeonShapeMetrics } from './material';