@appinternalleads/ui 0.4.0 → 0.4.2

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 (901) hide show
  1. package/README.md +92 -0
  2. package/dist/cjs/agent/AgentComponent.js +1 -1
  3. package/dist/cjs/agent/AgentComponent.js.map +1 -1
  4. package/dist/cjs/agent/manifests.js +81 -1
  5. package/dist/cjs/agent/manifests.js.map +1 -1
  6. package/dist/cjs/agent/result.js +6 -0
  7. package/dist/cjs/agent/result.js.map +1 -1
  8. package/dist/cjs/components/catalog.js +18 -0
  9. package/dist/cjs/components/catalog.js.map +1 -1
  10. package/dist/cjs/components/onboarding/animated-status/AnimatedStage.js +21 -0
  11. package/dist/cjs/components/onboarding/animated-status/AnimatedStage.js.map +1 -0
  12. package/dist/cjs/components/onboarding/animated-status/AnimatedStage.types.js +6 -0
  13. package/dist/cjs/components/onboarding/animated-status/AnimatedStage.types.js.map +1 -0
  14. package/dist/cjs/components/onboarding/animated-status/AnimatedStage.web.js +89 -0
  15. package/dist/cjs/components/onboarding/animated-status/AnimatedStage.web.js.map +1 -0
  16. package/dist/cjs/components/onboarding/animated-status/AnimatedStatusView.js +62 -0
  17. package/dist/cjs/components/onboarding/animated-status/AnimatedStatusView.js.map +1 -0
  18. package/dist/cjs/components/onboarding/animated-status/AnimatedStill.js +20 -0
  19. package/dist/cjs/components/onboarding/animated-status/AnimatedStill.js.map +1 -0
  20. package/dist/cjs/components/onboarding/animated-status/contract.js +87 -0
  21. package/dist/cjs/components/onboarding/animated-status/contract.js.map +1 -0
  22. package/dist/cjs/components/onboarding/animated-status/engine.js +40 -0
  23. package/dist/cjs/components/onboarding/animated-status/engine.js.map +1 -0
  24. package/dist/cjs/components/onboarding/animated-status/index.js +20 -0
  25. package/dist/cjs/components/onboarding/animated-status/index.js.map +1 -0
  26. package/dist/cjs/components/onboarding/animated-status/presets.json +126 -0
  27. package/dist/cjs/components/onboarding/animated-status/riv.js +7 -0
  28. package/dist/cjs/components/onboarding/animated-status/riv.js.map +1 -0
  29. package/dist/cjs/components/onboarding/index.js +4 -0
  30. package/dist/cjs/components/onboarding/index.js.map +1 -1
  31. package/dist/cjs/components/onboarding/presets.js +90 -84
  32. package/dist/cjs/components/onboarding/presets.js.map +1 -1
  33. package/dist/cjs/components/onboarding/receipt-printer/ReceiptStage.js +43 -6
  34. package/dist/cjs/components/onboarding/receipt-printer/ReceiptStage.js.map +1 -1
  35. package/dist/cjs/components/onboarding/send-completion/SendCompletionView.js +111 -0
  36. package/dist/cjs/components/onboarding/send-completion/SendCompletionView.js.map +1 -0
  37. package/dist/cjs/components/onboarding/send-completion/SendStage.js +37 -0
  38. package/dist/cjs/components/onboarding/send-completion/SendStage.js.map +1 -0
  39. package/dist/cjs/components/onboarding/send-completion/SendStage.types.js +6 -0
  40. package/dist/cjs/components/onboarding/send-completion/SendStage.types.js.map +1 -0
  41. package/dist/cjs/components/onboarding/send-completion/SendStage.web.js +107 -0
  42. package/dist/cjs/components/onboarding/send-completion/SendStage.web.js.map +1 -0
  43. package/dist/cjs/components/onboarding/send-completion/SendStill.js +17 -0
  44. package/dist/cjs/components/onboarding/send-completion/SendStill.js.map +1 -0
  45. package/dist/cjs/components/onboarding/send-completion/contract.js +83 -0
  46. package/dist/cjs/components/onboarding/send-completion/contract.js.map +1 -0
  47. package/dist/cjs/components/onboarding/send-completion/engine.js +32 -0
  48. package/dist/cjs/components/onboarding/send-completion/engine.js.map +1 -0
  49. package/dist/cjs/components/onboarding/send-completion/index.js +22 -0
  50. package/dist/cjs/components/onboarding/send-completion/index.js.map +1 -0
  51. package/dist/cjs/components/onboarding/send-completion/presets.json +132 -0
  52. package/dist/cjs/components/onboarding/send-completion/riv.js +7 -0
  53. package/dist/cjs/components/onboarding/send-completion/riv.js.map +1 -0
  54. package/dist/cjs/components/onboarding/shared/actions-data.js +2 -0
  55. package/dist/cjs/components/onboarding/shared/actions-data.js.map +1 -1
  56. package/dist/cjs/components/onboarding/shared/configColor.js +76 -0
  57. package/dist/cjs/components/onboarding/shared/configColor.js.map +1 -0
  58. package/dist/cjs/components/onboarding/shared/contract.js +4 -0
  59. package/dist/cjs/components/onboarding/shared/contract.js.map +1 -1
  60. package/dist/cjs/components/onboarding/shared/describe.js +1 -1
  61. package/dist/cjs/components/onboarding/shared/describe.js.map +1 -1
  62. package/dist/cjs/components/onboarding/shared/mock.js +2 -0
  63. package/dist/cjs/components/onboarding/shared/mock.js.map +1 -1
  64. package/dist/cjs/components/onboarding/views.js +8 -0
  65. package/dist/cjs/components/onboarding/views.js.map +1 -1
  66. package/dist/cjs/motion/MotionPlayer.js +42 -0
  67. package/dist/cjs/motion/MotionPlayer.js.map +1 -0
  68. package/dist/cjs/motion/agent.js +323 -0
  69. package/dist/cjs/motion/agent.js.map +1 -0
  70. package/dist/cjs/motion/cat/Cat.js +79 -0
  71. package/dist/cjs/motion/cat/Cat.js.map +1 -0
  72. package/dist/cjs/motion/cat/animation.js +204 -0
  73. package/dist/cjs/motion/cat/animation.js.map +1 -0
  74. package/dist/cjs/motion/cat/art.generated.js +37 -0
  75. package/dist/cjs/motion/cat/art.generated.js.map +1 -0
  76. package/dist/cjs/motion/cat/config.js +136 -0
  77. package/dist/cjs/motion/cat/config.js.map +1 -0
  78. package/dist/cjs/motion/cat/index.js +75 -0
  79. package/dist/cjs/motion/cat/index.js.map +1 -0
  80. package/dist/cjs/motion/cat/rig.js +99 -0
  81. package/dist/cjs/motion/cat/rig.js.map +1 -0
  82. package/dist/cjs/motion/cat/scene.js +148 -0
  83. package/dist/cjs/motion/cat/scene.js.map +1 -0
  84. package/dist/cjs/motion/configurable/config.js +477 -0
  85. package/dist/cjs/motion/configurable/config.js.map +1 -0
  86. package/dist/cjs/motion/configurable/controls.js +44 -0
  87. package/dist/cjs/motion/configurable/controls.js.map +1 -0
  88. package/dist/cjs/motion/easing.js +62 -0
  89. package/dist/cjs/motion/easing.js.map +1 -0
  90. package/dist/cjs/motion/fit.js +12 -0
  91. package/dist/cjs/motion/fit.js.map +1 -0
  92. package/dist/cjs/motion/index.js +101 -0
  93. package/dist/cjs/motion/index.js.map +1 -0
  94. package/dist/cjs/motion/neon/GlowRenderer.js +18 -0
  95. package/dist/cjs/motion/neon/GlowRenderer.js.map +1 -0
  96. package/dist/cjs/motion/neon/NeonCanvas.js +97 -0
  97. package/dist/cjs/motion/neon/NeonCanvas.js.map +1 -0
  98. package/dist/cjs/motion/neon/NeonText.js +108 -0
  99. package/dist/cjs/motion/neon/NeonText.js.map +1 -0
  100. package/dist/cjs/motion/neon/NeonTextFrame.js +36 -0
  101. package/dist/cjs/motion/neon/NeonTextFrame.js.map +1 -0
  102. package/dist/cjs/motion/neon/artwork.js +102 -0
  103. package/dist/cjs/motion/neon/artwork.js.map +1 -0
  104. package/dist/cjs/motion/neon/audio.js +165 -0
  105. package/dist/cjs/motion/neon/audio.js.map +1 -0
  106. package/dist/cjs/motion/neon/config.js +334 -0
  107. package/dist/cjs/motion/neon/config.js.map +1 -0
  108. package/dist/cjs/motion/neon/flicker.js +196 -0
  109. package/dist/cjs/motion/neon/flicker.js.map +1 -0
  110. package/dist/cjs/motion/neon/fonts.js +52 -0
  111. package/dist/cjs/motion/neon/fonts.js.map +1 -0
  112. package/dist/cjs/motion/neon/frame.js +24 -0
  113. package/dist/cjs/motion/neon/frame.js.map +1 -0
  114. package/dist/cjs/motion/neon/glitch.js +114 -0
  115. package/dist/cjs/motion/neon/glitch.js.map +1 -0
  116. package/dist/cjs/motion/neon/index.js +119 -0
  117. package/dist/cjs/motion/neon/index.js.map +1 -0
  118. package/dist/cjs/motion/neon/layers.js +68 -0
  119. package/dist/cjs/motion/neon/layers.js.map +1 -0
  120. package/dist/cjs/motion/neon/material.js +56 -0
  121. package/dist/cjs/motion/neon/material.js.map +1 -0
  122. package/dist/cjs/motion/neon/random.js +43 -0
  123. package/dist/cjs/motion/neon/random.js.map +1 -0
  124. package/dist/cjs/motion/neon/scene.js +549 -0
  125. package/dist/cjs/motion/neon/scene.js.map +1 -0
  126. package/dist/cjs/motion/neon/synth.js +213 -0
  127. package/dist/cjs/motion/neon/synth.js.map +1 -0
  128. package/dist/cjs/motion/neon/typography.js +81 -0
  129. package/dist/cjs/motion/neon/typography.js.map +1 -0
  130. package/dist/cjs/motion/neon/wall.js +113 -0
  131. package/dist/cjs/motion/neon/wall.js.map +1 -0
  132. package/dist/cjs/motion/paperfold/PaperFold.js +40 -0
  133. package/dist/cjs/motion/paperfold/PaperFold.js.map +1 -0
  134. package/dist/cjs/motion/paperfold/PaperFoldFrame.js +290 -0
  135. package/dist/cjs/motion/paperfold/PaperFoldFrame.js.map +1 -0
  136. package/dist/cjs/motion/paperfold/PaperFoldPlayer.js +59 -0
  137. package/dist/cjs/motion/paperfold/PaperFoldPlayer.js.map +1 -0
  138. package/dist/cjs/motion/paperfold/art.js +388 -0
  139. package/dist/cjs/motion/paperfold/art.js.map +1 -0
  140. package/dist/cjs/motion/paperfold/config.js +103 -0
  141. package/dist/cjs/motion/paperfold/config.js.map +1 -0
  142. package/dist/cjs/motion/paperfold/controls.js +493 -0
  143. package/dist/cjs/motion/paperfold/controls.js.map +1 -0
  144. package/dist/cjs/motion/paperfold/engine.js +722 -0
  145. package/dist/cjs/motion/paperfold/engine.js.map +1 -0
  146. package/dist/cjs/motion/paperfold/fonts.js +25 -0
  147. package/dist/cjs/motion/paperfold/fonts.js.map +1 -0
  148. package/dist/cjs/motion/paperfold/index.js +113 -0
  149. package/dist/cjs/motion/paperfold/index.js.map +1 -0
  150. package/dist/cjs/motion/paperfold/manipulate.js +170 -0
  151. package/dist/cjs/motion/paperfold/manipulate.js.map +1 -0
  152. package/dist/cjs/motion/paperfold/presets.js +119 -0
  153. package/dist/cjs/motion/paperfold/presets.js.map +1 -0
  154. package/dist/cjs/motion/paperfold/template.js +40 -0
  155. package/dist/cjs/motion/paperfold/template.js.map +1 -0
  156. package/dist/cjs/motion/player.js +203 -0
  157. package/dist/cjs/motion/player.js.map +1 -0
  158. package/dist/cjs/motion/promo/PromoFrame.js +293 -0
  159. package/dist/cjs/motion/promo/PromoFrame.js.map +1 -0
  160. package/dist/cjs/motion/promo/PromoShowcasePlayer.js +59 -0
  161. package/dist/cjs/motion/promo/PromoShowcasePlayer.js.map +1 -0
  162. package/dist/cjs/motion/promo/config.js +565 -0
  163. package/dist/cjs/motion/promo/config.js.map +1 -0
  164. package/dist/cjs/motion/promo/controls.js +571 -0
  165. package/dist/cjs/motion/promo/controls.js.map +1 -0
  166. package/dist/cjs/motion/promo/easing.js +35 -0
  167. package/dist/cjs/motion/promo/easing.js.map +1 -0
  168. package/dist/cjs/motion/promo/engine.js +567 -0
  169. package/dist/cjs/motion/promo/engine.js.map +1 -0
  170. package/dist/cjs/motion/promo/fonts.js +20 -0
  171. package/dist/cjs/motion/promo/fonts.js.map +1 -0
  172. package/dist/cjs/motion/promo/icons.js +29 -0
  173. package/dist/cjs/motion/promo/icons.js.map +1 -0
  174. package/dist/cjs/motion/promo/index.js +73 -0
  175. package/dist/cjs/motion/promo/index.js.map +1 -0
  176. package/dist/cjs/motion/promo/presets.js +44 -0
  177. package/dist/cjs/motion/promo/presets.js.map +1 -0
  178. package/dist/cjs/motion/promo/template.js +38 -0
  179. package/dist/cjs/motion/promo/template.js.map +1 -0
  180. package/dist/cjs/motion/replication2/Replication2Player.js +93 -0
  181. package/dist/cjs/motion/replication2/Replication2Player.js.map +1 -0
  182. package/dist/cjs/motion/replication2/config.js +352 -0
  183. package/dist/cjs/motion/replication2/config.js.map +1 -0
  184. package/dist/cjs/motion/replication2/controls.js +286 -0
  185. package/dist/cjs/motion/replication2/controls.js.map +1 -0
  186. package/dist/cjs/motion/replication2/driver.js +68 -0
  187. package/dist/cjs/motion/replication2/driver.js.map +1 -0
  188. package/dist/cjs/motion/replication2/easing.js +97 -0
  189. package/dist/cjs/motion/replication2/easing.js.map +1 -0
  190. package/dist/cjs/motion/replication2/engine.js +481 -0
  191. package/dist/cjs/motion/replication2/engine.js.map +1 -0
  192. package/dist/cjs/motion/replication2/html.js +88 -0
  193. package/dist/cjs/motion/replication2/html.js.map +1 -0
  194. package/dist/cjs/motion/replication2/index.js +61 -0
  195. package/dist/cjs/motion/replication2/index.js.map +1 -0
  196. package/dist/cjs/motion/replication2/measure.js +30 -0
  197. package/dist/cjs/motion/replication2/measure.js.map +1 -0
  198. package/dist/cjs/motion/replication2/metrics.js +10 -0
  199. package/dist/cjs/motion/replication2/metrics.js.map +1 -0
  200. package/dist/cjs/motion/replication2/presets.js +67 -0
  201. package/dist/cjs/motion/replication2/presets.js.map +1 -0
  202. package/dist/cjs/motion/replication2/riv.js +7 -0
  203. package/dist/cjs/motion/replication2/riv.js.map +1 -0
  204. package/dist/cjs/motion/replication2/rive-contract.js +158 -0
  205. package/dist/cjs/motion/replication2/rive-contract.js.map +1 -0
  206. package/dist/cjs/motion/replication2/template.js +35 -0
  207. package/dist/cjs/motion/replication2/template.js.map +1 -0
  208. package/dist/cjs/motion/sample.js +149 -0
  209. package/dist/cjs/motion/sample.js.map +1 -0
  210. package/dist/cjs/motion/templates/hey-template.js +1552 -0
  211. package/dist/cjs/motion/templates/hey-template.js.map +1 -0
  212. package/dist/cjs/motion/templates/index.js +22 -0
  213. package/dist/cjs/motion/templates/index.js.map +1 -0
  214. package/dist/cjs/motion/templates/word-motion.js +1165 -0
  215. package/dist/cjs/motion/templates/word-motion.js.map +1 -0
  216. package/dist/cjs/motion/types.js +3 -0
  217. package/dist/cjs/motion/types.js.map +1 -0
  218. package/dist/cjs/motion/typesurface/TypeSurfaceCanvas.js +85 -0
  219. package/dist/cjs/motion/typesurface/TypeSurfaceCanvas.js.map +1 -0
  220. package/dist/cjs/motion/typesurface/art.js +861 -0
  221. package/dist/cjs/motion/typesurface/art.js.map +1 -0
  222. package/dist/cjs/motion/typesurface/config.js +289 -0
  223. package/dist/cjs/motion/typesurface/config.js.map +1 -0
  224. package/dist/cjs/motion/typesurface/construct.js +875 -0
  225. package/dist/cjs/motion/typesurface/construct.js.map +1 -0
  226. package/dist/cjs/motion/typesurface/engine.js +631 -0
  227. package/dist/cjs/motion/typesurface/engine.js.map +1 -0
  228. package/dist/cjs/motion/typesurface/fonts.js +45 -0
  229. package/dist/cjs/motion/typesurface/fonts.js.map +1 -0
  230. package/dist/cjs/motion/typesurface/index.js +80 -0
  231. package/dist/cjs/motion/typesurface/index.js.map +1 -0
  232. package/dist/cjs/motion/typesurface/layout.js +130 -0
  233. package/dist/cjs/motion/typesurface/layout.js.map +1 -0
  234. package/dist/cjs/motion/typesurface/ops.js +175 -0
  235. package/dist/cjs/motion/typesurface/ops.js.map +1 -0
  236. package/dist/cjs/motion/typesurface/presets.js +259 -0
  237. package/dist/cjs/motion/typesurface/presets.js.map +1 -0
  238. package/dist/cjs/motion/typesurface/renderer.js +738 -0
  239. package/dist/cjs/motion/typesurface/renderer.js.map +1 -0
  240. package/dist/cjs/motion/typesurface/shaders.js +322 -0
  241. package/dist/cjs/motion/typesurface/shaders.js.map +1 -0
  242. package/dist/cjs/motion/typesurface/surfaces.js +225 -0
  243. package/dist/cjs/motion/typesurface/surfaces.js.map +1 -0
  244. package/dist/cjs/motion/typesurface/text.js +34 -0
  245. package/dist/cjs/motion/typesurface/text.js.map +1 -0
  246. package/dist/cjs/motion/typesurface/timeline.js +64 -0
  247. package/dist/cjs/motion/typesurface/timeline.js.map +1 -0
  248. package/dist/cjs/motion/validate.js +89 -0
  249. package/dist/cjs/motion/validate.js.map +1 -0
  250. package/dist/cjs/native/RiveReceiptStage.js +9 -150
  251. package/dist/cjs/native/RiveReceiptStage.js.map +1 -1
  252. package/dist/cjs/native/riveReceiptStageFactory.js +162 -0
  253. package/dist/cjs/native/riveReceiptStageFactory.js.map +1 -0
  254. package/dist/cjs/tokens/stage.js +10 -0
  255. package/dist/cjs/tokens/stage.js.map +1 -0
  256. package/dist/esm/agent/AgentComponent.js +1 -1
  257. package/dist/esm/agent/AgentComponent.js.map +1 -1
  258. package/dist/esm/agent/manifests.d.ts.map +1 -1
  259. package/dist/esm/agent/manifests.js +81 -1
  260. package/dist/esm/agent/manifests.js.map +1 -1
  261. package/dist/esm/agent/result.d.ts.map +1 -1
  262. package/dist/esm/agent/result.js +6 -0
  263. package/dist/esm/agent/result.js.map +1 -1
  264. package/dist/esm/agent/types.d.ts +1 -1
  265. package/dist/esm/agent/types.d.ts.map +1 -1
  266. package/dist/esm/components/catalog.d.ts +1 -1
  267. package/dist/esm/components/catalog.d.ts.map +1 -1
  268. package/dist/esm/components/catalog.js +18 -0
  269. package/dist/esm/components/catalog.js.map +1 -1
  270. package/dist/esm/components/onboarding/animated-status/AnimatedStage.d.ts +9 -0
  271. package/dist/esm/components/onboarding/animated-status/AnimatedStage.d.ts.map +1 -0
  272. package/dist/esm/components/onboarding/animated-status/AnimatedStage.js +18 -0
  273. package/dist/esm/components/onboarding/animated-status/AnimatedStage.js.map +1 -0
  274. package/dist/esm/components/onboarding/animated-status/AnimatedStage.types.d.ts +31 -0
  275. package/dist/esm/components/onboarding/animated-status/AnimatedStage.types.d.ts.map +1 -0
  276. package/dist/esm/components/onboarding/animated-status/AnimatedStage.types.js +3 -0
  277. package/dist/esm/components/onboarding/animated-status/AnimatedStage.types.js.map +1 -0
  278. package/dist/esm/components/onboarding/animated-status/AnimatedStage.web.d.ts +4 -0
  279. package/dist/esm/components/onboarding/animated-status/AnimatedStage.web.d.ts.map +1 -0
  280. package/dist/esm/components/onboarding/animated-status/AnimatedStage.web.js +86 -0
  281. package/dist/esm/components/onboarding/animated-status/AnimatedStage.web.js.map +1 -0
  282. package/dist/esm/components/onboarding/animated-status/AnimatedStatusView.d.ts +32 -0
  283. package/dist/esm/components/onboarding/animated-status/AnimatedStatusView.d.ts.map +1 -0
  284. package/dist/esm/components/onboarding/animated-status/AnimatedStatusView.js +59 -0
  285. package/dist/esm/components/onboarding/animated-status/AnimatedStatusView.js.map +1 -0
  286. package/dist/esm/components/onboarding/animated-status/AnimatedStill.d.ts +8 -0
  287. package/dist/esm/components/onboarding/animated-status/AnimatedStill.d.ts.map +1 -0
  288. package/dist/esm/components/onboarding/animated-status/AnimatedStill.js +17 -0
  289. package/dist/esm/components/onboarding/animated-status/AnimatedStill.js.map +1 -0
  290. package/dist/esm/components/onboarding/animated-status/contract.d.ts +61 -0
  291. package/dist/esm/components/onboarding/animated-status/contract.d.ts.map +1 -0
  292. package/dist/esm/components/onboarding/animated-status/contract.js +78 -0
  293. package/dist/esm/components/onboarding/animated-status/contract.js.map +1 -0
  294. package/dist/esm/components/onboarding/animated-status/engine.d.ts +24 -0
  295. package/dist/esm/components/onboarding/animated-status/engine.d.ts.map +1 -0
  296. package/dist/esm/components/onboarding/animated-status/engine.js +32 -0
  297. package/dist/esm/components/onboarding/animated-status/engine.js.map +1 -0
  298. package/dist/esm/components/onboarding/animated-status/index.d.ts +5 -0
  299. package/dist/esm/components/onboarding/animated-status/index.d.ts.map +1 -0
  300. package/dist/esm/components/onboarding/animated-status/index.js +4 -0
  301. package/dist/esm/components/onboarding/animated-status/index.js.map +1 -0
  302. package/dist/esm/components/onboarding/animated-status/presets.json +126 -0
  303. package/dist/esm/components/onboarding/animated-status/riv.d.ts +3 -0
  304. package/dist/esm/components/onboarding/animated-status/riv.d.ts.map +1 -0
  305. package/dist/esm/components/onboarding/animated-status/riv.js +4 -0
  306. package/dist/esm/components/onboarding/animated-status/riv.js.map +1 -0
  307. package/dist/esm/components/onboarding/index.d.ts +2 -0
  308. package/dist/esm/components/onboarding/index.d.ts.map +1 -1
  309. package/dist/esm/components/onboarding/index.js +4 -0
  310. package/dist/esm/components/onboarding/index.js.map +1 -1
  311. package/dist/esm/components/onboarding/presets.d.ts.map +1 -1
  312. package/dist/esm/components/onboarding/presets.js +6 -0
  313. package/dist/esm/components/onboarding/presets.js.map +1 -1
  314. package/dist/esm/components/onboarding/receipt-printer/ReceiptStage.d.ts +4 -6
  315. package/dist/esm/components/onboarding/receipt-printer/ReceiptStage.d.ts.map +1 -1
  316. package/dist/esm/components/onboarding/receipt-printer/ReceiptStage.js +42 -6
  317. package/dist/esm/components/onboarding/receipt-printer/ReceiptStage.js.map +1 -1
  318. package/dist/esm/components/onboarding/send-completion/SendCompletionView.d.ts +47 -0
  319. package/dist/esm/components/onboarding/send-completion/SendCompletionView.d.ts.map +1 -0
  320. package/dist/esm/components/onboarding/send-completion/SendCompletionView.js +108 -0
  321. package/dist/esm/components/onboarding/send-completion/SendCompletionView.js.map +1 -0
  322. package/dist/esm/components/onboarding/send-completion/SendStage.d.ts +9 -0
  323. package/dist/esm/components/onboarding/send-completion/SendStage.d.ts.map +1 -0
  324. package/dist/esm/components/onboarding/send-completion/SendStage.js +34 -0
  325. package/dist/esm/components/onboarding/send-completion/SendStage.js.map +1 -0
  326. package/dist/esm/components/onboarding/send-completion/SendStage.types.d.ts +33 -0
  327. package/dist/esm/components/onboarding/send-completion/SendStage.types.d.ts.map +1 -0
  328. package/dist/esm/components/onboarding/send-completion/SendStage.types.js +3 -0
  329. package/dist/esm/components/onboarding/send-completion/SendStage.types.js.map +1 -0
  330. package/dist/esm/components/onboarding/send-completion/SendStage.web.d.ts +4 -0
  331. package/dist/esm/components/onboarding/send-completion/SendStage.web.d.ts.map +1 -0
  332. package/dist/esm/components/onboarding/send-completion/SendStage.web.js +104 -0
  333. package/dist/esm/components/onboarding/send-completion/SendStage.web.js.map +1 -0
  334. package/dist/esm/components/onboarding/send-completion/SendStill.d.ts +11 -0
  335. package/dist/esm/components/onboarding/send-completion/SendStill.d.ts.map +1 -0
  336. package/dist/esm/components/onboarding/send-completion/SendStill.js +14 -0
  337. package/dist/esm/components/onboarding/send-completion/SendStill.js.map +1 -0
  338. package/dist/esm/components/onboarding/send-completion/contract.d.ts +99 -0
  339. package/dist/esm/components/onboarding/send-completion/contract.d.ts.map +1 -0
  340. package/dist/esm/components/onboarding/send-completion/contract.js +76 -0
  341. package/dist/esm/components/onboarding/send-completion/contract.js.map +1 -0
  342. package/dist/esm/components/onboarding/send-completion/engine.d.ts +20 -0
  343. package/dist/esm/components/onboarding/send-completion/engine.d.ts.map +1 -0
  344. package/dist/esm/components/onboarding/send-completion/engine.js +28 -0
  345. package/dist/esm/components/onboarding/send-completion/engine.js.map +1 -0
  346. package/dist/esm/components/onboarding/send-completion/index.d.ts +6 -0
  347. package/dist/esm/components/onboarding/send-completion/index.d.ts.map +1 -0
  348. package/dist/esm/components/onboarding/send-completion/index.js +6 -0
  349. package/dist/esm/components/onboarding/send-completion/index.js.map +1 -0
  350. package/dist/esm/components/onboarding/send-completion/presets.json +132 -0
  351. package/dist/esm/components/onboarding/send-completion/riv.d.ts +3 -0
  352. package/dist/esm/components/onboarding/send-completion/riv.d.ts.map +1 -0
  353. package/dist/esm/components/onboarding/send-completion/riv.js +4 -0
  354. package/dist/esm/components/onboarding/send-completion/riv.js.map +1 -0
  355. package/dist/esm/components/onboarding/shared/actions-data.d.ts.map +1 -1
  356. package/dist/esm/components/onboarding/shared/actions-data.js +2 -0
  357. package/dist/esm/components/onboarding/shared/actions-data.js.map +1 -1
  358. package/dist/esm/components/onboarding/shared/configColor.d.ts +29 -0
  359. package/dist/esm/components/onboarding/shared/configColor.d.ts.map +1 -0
  360. package/dist/esm/components/onboarding/shared/configColor.js +69 -0
  361. package/dist/esm/components/onboarding/shared/configColor.js.map +1 -0
  362. package/dist/esm/components/onboarding/shared/contract.d.ts +1 -1
  363. package/dist/esm/components/onboarding/shared/contract.d.ts.map +1 -1
  364. package/dist/esm/components/onboarding/shared/contract.js +4 -0
  365. package/dist/esm/components/onboarding/shared/contract.js.map +1 -1
  366. package/dist/esm/components/onboarding/shared/describe.d.ts.map +1 -1
  367. package/dist/esm/components/onboarding/shared/describe.js +1 -1
  368. package/dist/esm/components/onboarding/shared/describe.js.map +1 -1
  369. package/dist/esm/components/onboarding/shared/mock.d.ts +2 -0
  370. package/dist/esm/components/onboarding/shared/mock.d.ts.map +1 -1
  371. package/dist/esm/components/onboarding/shared/mock.js +2 -0
  372. package/dist/esm/components/onboarding/shared/mock.js.map +1 -1
  373. package/dist/esm/components/onboarding/views.d.ts.map +1 -1
  374. package/dist/esm/components/onboarding/views.js +8 -0
  375. package/dist/esm/components/onboarding/views.js.map +1 -1
  376. package/dist/esm/motion/MotionPlayer.d.ts +22 -0
  377. package/dist/esm/motion/MotionPlayer.d.ts.map +1 -0
  378. package/dist/esm/motion/MotionPlayer.js +39 -0
  379. package/dist/esm/motion/MotionPlayer.js.map +1 -0
  380. package/dist/esm/motion/agent.d.ts +146 -0
  381. package/dist/esm/motion/agent.d.ts.map +1 -0
  382. package/dist/esm/motion/agent.js +278 -0
  383. package/dist/esm/motion/agent.js.map +1 -0
  384. package/dist/esm/motion/cat/Cat.d.ts +43 -0
  385. package/dist/esm/motion/cat/Cat.d.ts.map +1 -0
  386. package/dist/esm/motion/cat/Cat.js +74 -0
  387. package/dist/esm/motion/cat/Cat.js.map +1 -0
  388. package/dist/esm/motion/cat/animation.d.ts +86 -0
  389. package/dist/esm/motion/cat/animation.d.ts.map +1 -0
  390. package/dist/esm/motion/cat/animation.js +193 -0
  391. package/dist/esm/motion/cat/animation.js.map +1 -0
  392. package/dist/esm/motion/cat/art.generated.d.ts +53 -0
  393. package/dist/esm/motion/cat/art.generated.d.ts.map +1 -0
  394. package/dist/esm/motion/cat/art.generated.js +34 -0
  395. package/dist/esm/motion/cat/art.generated.js.map +1 -0
  396. package/dist/esm/motion/cat/config.d.ts +103 -0
  397. package/dist/esm/motion/cat/config.d.ts.map +1 -0
  398. package/dist/esm/motion/cat/config.js +129 -0
  399. package/dist/esm/motion/cat/config.js.map +1 -0
  400. package/dist/esm/motion/cat/index.d.ts +13 -0
  401. package/dist/esm/motion/cat/index.d.ts.map +1 -0
  402. package/dist/esm/motion/cat/index.js +13 -0
  403. package/dist/esm/motion/cat/index.js.map +1 -0
  404. package/dist/esm/motion/cat/rig.d.ts +44 -0
  405. package/dist/esm/motion/cat/rig.d.ts.map +1 -0
  406. package/dist/esm/motion/cat/rig.js +86 -0
  407. package/dist/esm/motion/cat/rig.js.map +1 -0
  408. package/dist/esm/motion/cat/scene.d.ts +66 -0
  409. package/dist/esm/motion/cat/scene.d.ts.map +1 -0
  410. package/dist/esm/motion/cat/scene.js +137 -0
  411. package/dist/esm/motion/cat/scene.js.map +1 -0
  412. package/dist/esm/motion/configurable/config.d.ts +80 -0
  413. package/dist/esm/motion/configurable/config.d.ts.map +1 -0
  414. package/dist/esm/motion/configurable/config.js +468 -0
  415. package/dist/esm/motion/configurable/config.js.map +1 -0
  416. package/dist/esm/motion/configurable/controls.d.ts +74 -0
  417. package/dist/esm/motion/configurable/controls.d.ts.map +1 -0
  418. package/dist/esm/motion/configurable/controls.js +38 -0
  419. package/dist/esm/motion/configurable/controls.js.map +1 -0
  420. package/dist/esm/motion/easing.d.ts +4 -0
  421. package/dist/esm/motion/easing.d.ts.map +1 -0
  422. package/dist/esm/motion/easing.js +58 -0
  423. package/dist/esm/motion/easing.js.map +1 -0
  424. package/dist/esm/motion/fit.d.ts +8 -0
  425. package/dist/esm/motion/fit.d.ts.map +1 -0
  426. package/dist/esm/motion/fit.js +8 -0
  427. package/dist/esm/motion/fit.js.map +1 -0
  428. package/dist/esm/motion/index.d.ts +27 -0
  429. package/dist/esm/motion/index.d.ts.map +1 -0
  430. package/dist/esm/motion/index.js +21 -0
  431. package/dist/esm/motion/index.js.map +1 -0
  432. package/dist/esm/motion/neon/GlowRenderer.d.ts +31 -0
  433. package/dist/esm/motion/neon/GlowRenderer.d.ts.map +1 -0
  434. package/dist/esm/motion/neon/GlowRenderer.js +14 -0
  435. package/dist/esm/motion/neon/GlowRenderer.js.map +1 -0
  436. package/dist/esm/motion/neon/NeonCanvas.d.ts +42 -0
  437. package/dist/esm/motion/neon/NeonCanvas.d.ts.map +1 -0
  438. package/dist/esm/motion/neon/NeonCanvas.js +92 -0
  439. package/dist/esm/motion/neon/NeonCanvas.js.map +1 -0
  440. package/dist/esm/motion/neon/NeonText.d.ts +26 -0
  441. package/dist/esm/motion/neon/NeonText.d.ts.map +1 -0
  442. package/dist/esm/motion/neon/NeonText.js +103 -0
  443. package/dist/esm/motion/neon/NeonText.js.map +1 -0
  444. package/dist/esm/motion/neon/NeonTextFrame.d.ts +29 -0
  445. package/dist/esm/motion/neon/NeonTextFrame.d.ts.map +1 -0
  446. package/dist/esm/motion/neon/NeonTextFrame.js +33 -0
  447. package/dist/esm/motion/neon/NeonTextFrame.js.map +1 -0
  448. package/dist/esm/motion/neon/artwork.d.ts +29 -0
  449. package/dist/esm/motion/neon/artwork.d.ts.map +1 -0
  450. package/dist/esm/motion/neon/artwork.js +98 -0
  451. package/dist/esm/motion/neon/artwork.js.map +1 -0
  452. package/dist/esm/motion/neon/audio.d.ts +49 -0
  453. package/dist/esm/motion/neon/audio.d.ts.map +1 -0
  454. package/dist/esm/motion/neon/audio.js +161 -0
  455. package/dist/esm/motion/neon/audio.js.map +1 -0
  456. package/dist/esm/motion/neon/config.d.ts +319 -0
  457. package/dist/esm/motion/neon/config.d.ts.map +1 -0
  458. package/dist/esm/motion/neon/config.js +319 -0
  459. package/dist/esm/motion/neon/config.js.map +1 -0
  460. package/dist/esm/motion/neon/flicker.d.ts +82 -0
  461. package/dist/esm/motion/neon/flicker.d.ts.map +1 -0
  462. package/dist/esm/motion/neon/flicker.js +187 -0
  463. package/dist/esm/motion/neon/flicker.js.map +1 -0
  464. package/dist/esm/motion/neon/fonts.d.ts +29 -0
  465. package/dist/esm/motion/neon/fonts.d.ts.map +1 -0
  466. package/dist/esm/motion/neon/fonts.js +47 -0
  467. package/dist/esm/motion/neon/fonts.js.map +1 -0
  468. package/dist/esm/motion/neon/frame.d.ts +22 -0
  469. package/dist/esm/motion/neon/frame.d.ts.map +1 -0
  470. package/dist/esm/motion/neon/frame.js +20 -0
  471. package/dist/esm/motion/neon/frame.js.map +1 -0
  472. package/dist/esm/motion/neon/glitch.d.ts +64 -0
  473. package/dist/esm/motion/neon/glitch.d.ts.map +1 -0
  474. package/dist/esm/motion/neon/glitch.js +108 -0
  475. package/dist/esm/motion/neon/glitch.js.map +1 -0
  476. package/dist/esm/motion/neon/index.d.ts +29 -0
  477. package/dist/esm/motion/neon/index.d.ts.map +1 -0
  478. package/dist/esm/motion/neon/index.js +28 -0
  479. package/dist/esm/motion/neon/index.js.map +1 -0
  480. package/dist/esm/motion/neon/layers.d.ts +56 -0
  481. package/dist/esm/motion/neon/layers.d.ts.map +1 -0
  482. package/dist/esm/motion/neon/layers.js +64 -0
  483. package/dist/esm/motion/neon/layers.js.map +1 -0
  484. package/dist/esm/motion/neon/material.d.ts +68 -0
  485. package/dist/esm/motion/neon/material.d.ts.map +1 -0
  486. package/dist/esm/motion/neon/material.js +51 -0
  487. package/dist/esm/motion/neon/material.js.map +1 -0
  488. package/dist/esm/motion/neon/random.d.ts +15 -0
  489. package/dist/esm/motion/neon/random.d.ts.map +1 -0
  490. package/dist/esm/motion/neon/random.js +37 -0
  491. package/dist/esm/motion/neon/random.js.map +1 -0
  492. package/dist/esm/motion/neon/scene.d.ts +255 -0
  493. package/dist/esm/motion/neon/scene.d.ts.map +1 -0
  494. package/dist/esm/motion/neon/scene.js +532 -0
  495. package/dist/esm/motion/neon/scene.js.map +1 -0
  496. package/dist/esm/motion/neon/synth.d.ts +18 -0
  497. package/dist/esm/motion/neon/synth.d.ts.map +1 -0
  498. package/dist/esm/motion/neon/synth.js +208 -0
  499. package/dist/esm/motion/neon/synth.js.map +1 -0
  500. package/dist/esm/motion/neon/typography.d.ts +53 -0
  501. package/dist/esm/motion/neon/typography.d.ts.map +1 -0
  502. package/dist/esm/motion/neon/typography.js +74 -0
  503. package/dist/esm/motion/neon/typography.js.map +1 -0
  504. package/dist/esm/motion/neon/wall.d.ts +62 -0
  505. package/dist/esm/motion/neon/wall.d.ts.map +1 -0
  506. package/dist/esm/motion/neon/wall.js +106 -0
  507. package/dist/esm/motion/neon/wall.js.map +1 -0
  508. package/dist/esm/motion/paperfold/PaperFold.d.ts +36 -0
  509. package/dist/esm/motion/paperfold/PaperFold.d.ts.map +1 -0
  510. package/dist/esm/motion/paperfold/PaperFold.js +37 -0
  511. package/dist/esm/motion/paperfold/PaperFold.js.map +1 -0
  512. package/dist/esm/motion/paperfold/PaperFoldFrame.d.ts +39 -0
  513. package/dist/esm/motion/paperfold/PaperFoldFrame.d.ts.map +1 -0
  514. package/dist/esm/motion/paperfold/PaperFoldFrame.js +283 -0
  515. package/dist/esm/motion/paperfold/PaperFoldFrame.js.map +1 -0
  516. package/dist/esm/motion/paperfold/PaperFoldPlayer.d.ts +27 -0
  517. package/dist/esm/motion/paperfold/PaperFoldPlayer.d.ts.map +1 -0
  518. package/dist/esm/motion/paperfold/PaperFoldPlayer.js +56 -0
  519. package/dist/esm/motion/paperfold/PaperFoldPlayer.js.map +1 -0
  520. package/dist/esm/motion/paperfold/art.d.ts +148 -0
  521. package/dist/esm/motion/paperfold/art.d.ts.map +1 -0
  522. package/dist/esm/motion/paperfold/art.js +374 -0
  523. package/dist/esm/motion/paperfold/art.js.map +1 -0
  524. package/dist/esm/motion/paperfold/config.d.ts +47 -0
  525. package/dist/esm/motion/paperfold/config.d.ts.map +1 -0
  526. package/dist/esm/motion/paperfold/config.js +96 -0
  527. package/dist/esm/motion/paperfold/config.js.map +1 -0
  528. package/dist/esm/motion/paperfold/controls.d.ts +57 -0
  529. package/dist/esm/motion/paperfold/controls.d.ts.map +1 -0
  530. package/dist/esm/motion/paperfold/controls.js +506 -0
  531. package/dist/esm/motion/paperfold/controls.js.map +1 -0
  532. package/dist/esm/motion/paperfold/engine.d.ts +397 -0
  533. package/dist/esm/motion/paperfold/engine.d.ts.map +1 -0
  534. package/dist/esm/motion/paperfold/engine.js +699 -0
  535. package/dist/esm/motion/paperfold/engine.js.map +1 -0
  536. package/dist/esm/motion/paperfold/fonts.d.ts +3 -0
  537. package/dist/esm/motion/paperfold/fonts.d.ts.map +1 -0
  538. package/dist/esm/motion/paperfold/fonts.js +21 -0
  539. package/dist/esm/motion/paperfold/fonts.js.map +1 -0
  540. package/dist/esm/motion/paperfold/index.d.ts +17 -0
  541. package/dist/esm/motion/paperfold/index.d.ts.map +1 -0
  542. package/dist/esm/motion/paperfold/index.js +17 -0
  543. package/dist/esm/motion/paperfold/index.js.map +1 -0
  544. package/dist/esm/motion/paperfold/manipulate.d.ts +59 -0
  545. package/dist/esm/motion/paperfold/manipulate.d.ts.map +1 -0
  546. package/dist/esm/motion/paperfold/manipulate.js +161 -0
  547. package/dist/esm/motion/paperfold/manipulate.js.map +1 -0
  548. package/dist/esm/motion/paperfold/presets.d.ts +9 -0
  549. package/dist/esm/motion/paperfold/presets.d.ts.map +1 -0
  550. package/dist/esm/motion/paperfold/presets.js +115 -0
  551. package/dist/esm/motion/paperfold/presets.js.map +1 -0
  552. package/dist/esm/motion/paperfold/template.d.ts +3 -0
  553. package/dist/esm/motion/paperfold/template.d.ts.map +1 -0
  554. package/dist/esm/motion/paperfold/template.js +37 -0
  555. package/dist/esm/motion/paperfold/template.js.map +1 -0
  556. package/dist/esm/motion/player.d.ts +35 -0
  557. package/dist/esm/motion/player.d.ts.map +1 -0
  558. package/dist/esm/motion/player.js +197 -0
  559. package/dist/esm/motion/player.js.map +1 -0
  560. package/dist/esm/motion/promo/PromoFrame.d.ts +31 -0
  561. package/dist/esm/motion/promo/PromoFrame.d.ts.map +1 -0
  562. package/dist/esm/motion/promo/PromoFrame.js +288 -0
  563. package/dist/esm/motion/promo/PromoFrame.js.map +1 -0
  564. package/dist/esm/motion/promo/PromoShowcasePlayer.d.ts +25 -0
  565. package/dist/esm/motion/promo/PromoShowcasePlayer.d.ts.map +1 -0
  566. package/dist/esm/motion/promo/PromoShowcasePlayer.js +56 -0
  567. package/dist/esm/motion/promo/PromoShowcasePlayer.js.map +1 -0
  568. package/dist/esm/motion/promo/config.d.ts +91 -0
  569. package/dist/esm/motion/promo/config.d.ts.map +1 -0
  570. package/dist/esm/motion/promo/config.js +550 -0
  571. package/dist/esm/motion/promo/config.js.map +1 -0
  572. package/dist/esm/motion/promo/controls.d.ts +86 -0
  573. package/dist/esm/motion/promo/controls.d.ts.map +1 -0
  574. package/dist/esm/motion/promo/controls.js +567 -0
  575. package/dist/esm/motion/promo/controls.js.map +1 -0
  576. package/dist/esm/motion/promo/easing.d.ts +3 -0
  577. package/dist/esm/motion/promo/easing.d.ts.map +1 -0
  578. package/dist/esm/motion/promo/easing.js +32 -0
  579. package/dist/esm/motion/promo/easing.js.map +1 -0
  580. package/dist/esm/motion/promo/engine.d.ts +205 -0
  581. package/dist/esm/motion/promo/engine.d.ts.map +1 -0
  582. package/dist/esm/motion/promo/engine.js +551 -0
  583. package/dist/esm/motion/promo/engine.js.map +1 -0
  584. package/dist/esm/motion/promo/fonts.d.ts +7 -0
  585. package/dist/esm/motion/promo/fonts.d.ts.map +1 -0
  586. package/dist/esm/motion/promo/fonts.js +16 -0
  587. package/dist/esm/motion/promo/fonts.js.map +1 -0
  588. package/dist/esm/motion/promo/icons.d.ts +7 -0
  589. package/dist/esm/motion/promo/icons.d.ts.map +1 -0
  590. package/dist/esm/motion/promo/icons.js +26 -0
  591. package/dist/esm/motion/promo/icons.js.map +1 -0
  592. package/dist/esm/motion/promo/index.d.ts +15 -0
  593. package/dist/esm/motion/promo/index.d.ts.map +1 -0
  594. package/dist/esm/motion/promo/index.js +15 -0
  595. package/dist/esm/motion/promo/index.js.map +1 -0
  596. package/dist/esm/motion/promo/presets.d.ts +13 -0
  597. package/dist/esm/motion/promo/presets.d.ts.map +1 -0
  598. package/dist/esm/motion/promo/presets.js +40 -0
  599. package/dist/esm/motion/promo/presets.js.map +1 -0
  600. package/dist/esm/motion/promo/template.d.ts +8 -0
  601. package/dist/esm/motion/promo/template.d.ts.map +1 -0
  602. package/dist/esm/motion/promo/template.js +35 -0
  603. package/dist/esm/motion/promo/template.js.map +1 -0
  604. package/dist/esm/motion/replication2/Replication2Player.d.ts +26 -0
  605. package/dist/esm/motion/replication2/Replication2Player.d.ts.map +1 -0
  606. package/dist/esm/motion/replication2/Replication2Player.js +90 -0
  607. package/dist/esm/motion/replication2/Replication2Player.js.map +1 -0
  608. package/dist/esm/motion/replication2/config.d.ts +78 -0
  609. package/dist/esm/motion/replication2/config.d.ts.map +1 -0
  610. package/dist/esm/motion/replication2/config.js +341 -0
  611. package/dist/esm/motion/replication2/config.js.map +1 -0
  612. package/dist/esm/motion/replication2/controls.d.ts +70 -0
  613. package/dist/esm/motion/replication2/controls.d.ts.map +1 -0
  614. package/dist/esm/motion/replication2/controls.js +283 -0
  615. package/dist/esm/motion/replication2/controls.js.map +1 -0
  616. package/dist/esm/motion/replication2/driver.d.ts +23 -0
  617. package/dist/esm/motion/replication2/driver.d.ts.map +1 -0
  618. package/dist/esm/motion/replication2/driver.js +65 -0
  619. package/dist/esm/motion/replication2/driver.js.map +1 -0
  620. package/dist/esm/motion/replication2/easing.d.ts +19 -0
  621. package/dist/esm/motion/replication2/easing.d.ts.map +1 -0
  622. package/dist/esm/motion/replication2/easing.js +92 -0
  623. package/dist/esm/motion/replication2/easing.js.map +1 -0
  624. package/dist/esm/motion/replication2/engine.d.ts +236 -0
  625. package/dist/esm/motion/replication2/engine.d.ts.map +1 -0
  626. package/dist/esm/motion/replication2/engine.js +470 -0
  627. package/dist/esm/motion/replication2/engine.js.map +1 -0
  628. package/dist/esm/motion/replication2/html.d.ts +30 -0
  629. package/dist/esm/motion/replication2/html.d.ts.map +1 -0
  630. package/dist/esm/motion/replication2/html.js +83 -0
  631. package/dist/esm/motion/replication2/html.js.map +1 -0
  632. package/dist/esm/motion/replication2/index.d.ts +15 -0
  633. package/dist/esm/motion/replication2/index.d.ts.map +1 -0
  634. package/dist/esm/motion/replication2/index.js +15 -0
  635. package/dist/esm/motion/replication2/index.js.map +1 -0
  636. package/dist/esm/motion/replication2/measure.d.ts +3 -0
  637. package/dist/esm/motion/replication2/measure.d.ts.map +1 -0
  638. package/dist/esm/motion/replication2/measure.js +27 -0
  639. package/dist/esm/motion/replication2/measure.js.map +1 -0
  640. package/dist/esm/motion/replication2/metrics.d.ts +6 -0
  641. package/dist/esm/motion/replication2/metrics.d.ts.map +1 -0
  642. package/dist/esm/motion/replication2/metrics.js +7 -0
  643. package/dist/esm/motion/replication2/metrics.js.map +1 -0
  644. package/dist/esm/motion/replication2/presets.d.ts +13 -0
  645. package/dist/esm/motion/replication2/presets.d.ts.map +1 -0
  646. package/dist/esm/motion/replication2/presets.js +63 -0
  647. package/dist/esm/motion/replication2/presets.js.map +1 -0
  648. package/dist/esm/motion/replication2/riv.d.ts +3 -0
  649. package/dist/esm/motion/replication2/riv.d.ts.map +1 -0
  650. package/dist/esm/motion/replication2/riv.js +4 -0
  651. package/dist/esm/motion/replication2/riv.js.map +1 -0
  652. package/dist/esm/motion/replication2/rive-contract.d.ts +27 -0
  653. package/dist/esm/motion/replication2/rive-contract.d.ts.map +1 -0
  654. package/dist/esm/motion/replication2/rive-contract.js +153 -0
  655. package/dist/esm/motion/replication2/rive-contract.js.map +1 -0
  656. package/dist/esm/motion/replication2/template.d.ts +8 -0
  657. package/dist/esm/motion/replication2/template.d.ts.map +1 -0
  658. package/dist/esm/motion/replication2/template.js +32 -0
  659. package/dist/esm/motion/replication2/template.js.map +1 -0
  660. package/dist/esm/motion/sample.d.ts +61 -0
  661. package/dist/esm/motion/sample.d.ts.map +1 -0
  662. package/dist/esm/motion/sample.js +138 -0
  663. package/dist/esm/motion/sample.js.map +1 -0
  664. package/dist/esm/motion/templates/hey-template.d.ts +3 -0
  665. package/dist/esm/motion/templates/hey-template.d.ts.map +1 -0
  666. package/dist/esm/motion/templates/hey-template.js +1549 -0
  667. package/dist/esm/motion/templates/hey-template.js.map +1 -0
  668. package/dist/esm/motion/templates/index.d.ts +22 -0
  669. package/dist/esm/motion/templates/index.d.ts.map +1 -0
  670. package/dist/esm/motion/templates/index.js +15 -0
  671. package/dist/esm/motion/templates/index.js.map +1 -0
  672. package/dist/esm/motion/templates/word-motion.d.ts +3 -0
  673. package/dist/esm/motion/templates/word-motion.d.ts.map +1 -0
  674. package/dist/esm/motion/templates/word-motion.js +1162 -0
  675. package/dist/esm/motion/templates/word-motion.js.map +1 -0
  676. package/dist/esm/motion/types.d.ts +192 -0
  677. package/dist/esm/motion/types.d.ts.map +1 -0
  678. package/dist/esm/motion/types.js +2 -0
  679. package/dist/esm/motion/types.js.map +1 -0
  680. package/dist/esm/motion/typesurface/TypeSurfaceCanvas.d.ts +32 -0
  681. package/dist/esm/motion/typesurface/TypeSurfaceCanvas.d.ts.map +1 -0
  682. package/dist/esm/motion/typesurface/TypeSurfaceCanvas.js +81 -0
  683. package/dist/esm/motion/typesurface/TypeSurfaceCanvas.js.map +1 -0
  684. package/dist/esm/motion/typesurface/art.d.ts +21 -0
  685. package/dist/esm/motion/typesurface/art.d.ts.map +1 -0
  686. package/dist/esm/motion/typesurface/art.js +854 -0
  687. package/dist/esm/motion/typesurface/art.js.map +1 -0
  688. package/dist/esm/motion/typesurface/config.d.ts +284 -0
  689. package/dist/esm/motion/typesurface/config.d.ts.map +1 -0
  690. package/dist/esm/motion/typesurface/config.js +280 -0
  691. package/dist/esm/motion/typesurface/config.js.map +1 -0
  692. package/dist/esm/motion/typesurface/construct.d.ts +284 -0
  693. package/dist/esm/motion/typesurface/construct.d.ts.map +1 -0
  694. package/dist/esm/motion/typesurface/construct.js +866 -0
  695. package/dist/esm/motion/typesurface/construct.js.map +1 -0
  696. package/dist/esm/motion/typesurface/engine.d.ts +102 -0
  697. package/dist/esm/motion/typesurface/engine.d.ts.map +1 -0
  698. package/dist/esm/motion/typesurface/engine.js +627 -0
  699. package/dist/esm/motion/typesurface/engine.js.map +1 -0
  700. package/dist/esm/motion/typesurface/fonts.d.ts +25 -0
  701. package/dist/esm/motion/typesurface/fonts.d.ts.map +1 -0
  702. package/dist/esm/motion/typesurface/fonts.js +40 -0
  703. package/dist/esm/motion/typesurface/fonts.js.map +1 -0
  704. package/dist/esm/motion/typesurface/index.d.ts +21 -0
  705. package/dist/esm/motion/typesurface/index.d.ts.map +1 -0
  706. package/dist/esm/motion/typesurface/index.js +21 -0
  707. package/dist/esm/motion/typesurface/index.js.map +1 -0
  708. package/dist/esm/motion/typesurface/layout.d.ts +57 -0
  709. package/dist/esm/motion/typesurface/layout.d.ts.map +1 -0
  710. package/dist/esm/motion/typesurface/layout.js +122 -0
  711. package/dist/esm/motion/typesurface/layout.js.map +1 -0
  712. package/dist/esm/motion/typesurface/ops.d.ts +70 -0
  713. package/dist/esm/motion/typesurface/ops.d.ts.map +1 -0
  714. package/dist/esm/motion/typesurface/ops.js +164 -0
  715. package/dist/esm/motion/typesurface/ops.js.map +1 -0
  716. package/dist/esm/motion/typesurface/presets.d.ts +51 -0
  717. package/dist/esm/motion/typesurface/presets.d.ts.map +1 -0
  718. package/dist/esm/motion/typesurface/presets.js +250 -0
  719. package/dist/esm/motion/typesurface/presets.js.map +1 -0
  720. package/dist/esm/motion/typesurface/renderer.d.ts +88 -0
  721. package/dist/esm/motion/typesurface/renderer.d.ts.map +1 -0
  722. package/dist/esm/motion/typesurface/renderer.js +732 -0
  723. package/dist/esm/motion/typesurface/renderer.js.map +1 -0
  724. package/dist/esm/motion/typesurface/shaders.d.ts +17 -0
  725. package/dist/esm/motion/typesurface/shaders.d.ts.map +1 -0
  726. package/dist/esm/motion/typesurface/shaders.js +319 -0
  727. package/dist/esm/motion/typesurface/shaders.js.map +1 -0
  728. package/dist/esm/motion/typesurface/surfaces.d.ts +108 -0
  729. package/dist/esm/motion/typesurface/surfaces.d.ts.map +1 -0
  730. package/dist/esm/motion/typesurface/surfaces.js +216 -0
  731. package/dist/esm/motion/typesurface/surfaces.js.map +1 -0
  732. package/dist/esm/motion/typesurface/text.d.ts +17 -0
  733. package/dist/esm/motion/typesurface/text.d.ts.map +1 -0
  734. package/dist/esm/motion/typesurface/text.js +28 -0
  735. package/dist/esm/motion/typesurface/text.js.map +1 -0
  736. package/dist/esm/motion/typesurface/timeline.d.ts +15 -0
  737. package/dist/esm/motion/typesurface/timeline.d.ts.map +1 -0
  738. package/dist/esm/motion/typesurface/timeline.js +57 -0
  739. package/dist/esm/motion/typesurface/timeline.js.map +1 -0
  740. package/dist/esm/motion/validate.d.ts +22 -0
  741. package/dist/esm/motion/validate.d.ts.map +1 -0
  742. package/dist/esm/motion/validate.js +84 -0
  743. package/dist/esm/motion/validate.js.map +1 -0
  744. package/dist/esm/native/RiveReceiptStage.d.ts +25 -2
  745. package/dist/esm/native/RiveReceiptStage.d.ts.map +1 -1
  746. package/dist/esm/native/RiveReceiptStage.js +7 -148
  747. package/dist/esm/native/RiveReceiptStage.js.map +1 -1
  748. package/dist/esm/native/riveReceiptStageFactory.d.ts +26 -0
  749. package/dist/esm/native/riveReceiptStageFactory.d.ts.map +1 -0
  750. package/dist/esm/native/riveReceiptStageFactory.js +159 -0
  751. package/dist/esm/native/riveReceiptStageFactory.js.map +1 -0
  752. package/dist/esm/tokens/stage.d.ts +7 -0
  753. package/dist/esm/tokens/stage.d.ts.map +1 -0
  754. package/dist/esm/tokens/stage.js +7 -0
  755. package/dist/esm/tokens/stage.js.map +1 -0
  756. package/docs/TYPE-SURFACE.md +183 -0
  757. package/package.json +38 -2
  758. package/spec/examples/components/onboarding/animated-status/case1.json +42 -0
  759. package/spec/examples/components/onboarding/animated-status/case2.json +42 -0
  760. package/spec/examples/components/onboarding/animated-status/case3.json +42 -0
  761. package/spec/examples/components/onboarding/animated-status/case4.json +42 -0
  762. package/spec/examples/components/onboarding/animated-status/case5.json +42 -0
  763. package/spec/examples/components/onboarding/send-completion/case1.json +48 -0
  764. package/spec/examples/components/onboarding/send-completion/case2.json +48 -0
  765. package/spec/examples/components/onboarding/send-completion/case3.json +48 -0
  766. package/spec/examples/components/onboarding/send-completion/case4.json +48 -0
  767. package/spec/examples/components/onboarding/send-completion/case5.json +48 -0
  768. package/spec/families/onboarding.schema.json +610 -1
  769. package/src/agent/AgentComponent.tsx +1 -1
  770. package/src/agent/manifests.ts +83 -1
  771. package/src/agent/result.ts +6 -0
  772. package/src/agent/types.ts +1 -1
  773. package/src/components/catalog.ts +21 -1
  774. package/src/components/onboarding/animated-status/AnimatedStage.tsx +18 -0
  775. package/src/components/onboarding/animated-status/AnimatedStage.types.ts +30 -0
  776. package/src/components/onboarding/animated-status/AnimatedStage.web.tsx +99 -0
  777. package/src/components/onboarding/animated-status/AnimatedStatusView.tsx +109 -0
  778. package/src/components/onboarding/animated-status/AnimatedStill.tsx +23 -0
  779. package/src/components/onboarding/animated-status/contract.ts +105 -0
  780. package/src/components/onboarding/animated-status/engine.ts +49 -0
  781. package/src/components/onboarding/animated-status/index.ts +8 -0
  782. package/src/components/onboarding/animated-status/presets.json +126 -0
  783. package/src/components/onboarding/animated-status/riv.ts +4 -0
  784. package/src/components/onboarding/index.ts +4 -0
  785. package/src/components/onboarding/presets.ts +6 -0
  786. package/src/components/onboarding/receipt-printer/ReceiptStage.tsx +46 -7
  787. package/src/components/onboarding/send-completion/SendCompletionView.tsx +164 -0
  788. package/src/components/onboarding/send-completion/SendStage.tsx +27 -0
  789. package/src/components/onboarding/send-completion/SendStage.types.ts +32 -0
  790. package/src/components/onboarding/send-completion/SendStage.web.tsx +116 -0
  791. package/src/components/onboarding/send-completion/SendStill.tsx +19 -0
  792. package/src/components/onboarding/send-completion/contract.ts +127 -0
  793. package/src/components/onboarding/send-completion/engine.ts +37 -0
  794. package/src/components/onboarding/send-completion/index.ts +10 -0
  795. package/src/components/onboarding/send-completion/presets.json +132 -0
  796. package/src/components/onboarding/send-completion/riv.ts +4 -0
  797. package/src/components/onboarding/shared/actions-data.ts +2 -0
  798. package/src/components/onboarding/shared/configColor.ts +72 -0
  799. package/src/components/onboarding/shared/contract.ts +4 -0
  800. package/src/components/onboarding/shared/describe.ts +1 -1
  801. package/src/components/onboarding/shared/mock.ts +2 -0
  802. package/src/components/onboarding/views.ts +8 -0
  803. package/src/motion/MotionPlayer.tsx +62 -0
  804. package/src/motion/agent.ts +288 -0
  805. package/src/motion/cat/Cat.tsx +118 -0
  806. package/src/motion/cat/animation.ts +206 -0
  807. package/src/motion/cat/art.generated.ts +44 -0
  808. package/src/motion/cat/config.ts +186 -0
  809. package/src/motion/cat/index.ts +26 -0
  810. package/src/motion/cat/rig.ts +102 -0
  811. package/src/motion/cat/scene.ts +181 -0
  812. package/src/motion/configurable/config.ts +420 -0
  813. package/src/motion/configurable/controls.ts +93 -0
  814. package/src/motion/easing.ts +55 -0
  815. package/src/motion/fit.ts +8 -0
  816. package/src/motion/index.ts +29 -0
  817. package/src/motion/neon/GlowRenderer.tsx +83 -0
  818. package/src/motion/neon/NeonCanvas.tsx +175 -0
  819. package/src/motion/neon/NeonText.tsx +113 -0
  820. package/src/motion/neon/NeonTextFrame.tsx +67 -0
  821. package/src/motion/neon/artwork.ts +95 -0
  822. package/src/motion/neon/audio.ts +162 -0
  823. package/src/motion/neon/config.ts +484 -0
  824. package/src/motion/neon/flicker.ts +225 -0
  825. package/src/motion/neon/fonts.ts +76 -0
  826. package/src/motion/neon/frame.ts +34 -0
  827. package/src/motion/neon/glitch.ts +142 -0
  828. package/src/motion/neon/index.ts +41 -0
  829. package/src/motion/neon/layers.tsx +209 -0
  830. package/src/motion/neon/material.ts +88 -0
  831. package/src/motion/neon/random.ts +40 -0
  832. package/src/motion/neon/scene.ts +610 -0
  833. package/src/motion/neon/synth.ts +188 -0
  834. package/src/motion/neon/typography.ts +102 -0
  835. package/src/motion/neon/wall.ts +157 -0
  836. package/src/motion/paperfold/PaperFold.tsx +45 -0
  837. package/src/motion/paperfold/PaperFoldFrame.tsx +576 -0
  838. package/src/motion/paperfold/PaperFoldPlayer.tsx +80 -0
  839. package/src/motion/paperfold/art.ts +455 -0
  840. package/src/motion/paperfold/config.ts +98 -0
  841. package/src/motion/paperfold/controls.ts +557 -0
  842. package/src/motion/paperfold/engine.ts +852 -0
  843. package/src/motion/paperfold/fonts.ts +21 -0
  844. package/src/motion/paperfold/index.ts +30 -0
  845. package/src/motion/paperfold/manipulate.ts +188 -0
  846. package/src/motion/paperfold/presets.ts +117 -0
  847. package/src/motion/paperfold/template.ts +38 -0
  848. package/src/motion/player.ts +207 -0
  849. package/src/motion/promo/PromoFrame.tsx +501 -0
  850. package/src/motion/promo/PromoShowcasePlayer.tsx +78 -0
  851. package/src/motion/promo/config.ts +479 -0
  852. package/src/motion/promo/controls.ts +643 -0
  853. package/src/motion/promo/easing.ts +36 -0
  854. package/src/motion/promo/engine.ts +587 -0
  855. package/src/motion/promo/fonts.ts +16 -0
  856. package/src/motion/promo/icons.tsx +29 -0
  857. package/src/motion/promo/index.ts +24 -0
  858. package/src/motion/promo/presets.ts +40 -0
  859. package/src/motion/promo/template.ts +36 -0
  860. package/src/motion/replication2/Replication2Player.tsx +115 -0
  861. package/src/motion/replication2/config.ts +323 -0
  862. package/src/motion/replication2/controls.ts +336 -0
  863. package/src/motion/replication2/driver.ts +92 -0
  864. package/src/motion/replication2/easing.ts +88 -0
  865. package/src/motion/replication2/engine.ts +539 -0
  866. package/src/motion/replication2/html.ts +87 -0
  867. package/src/motion/replication2/index.ts +14 -0
  868. package/src/motion/replication2/measure.ts +28 -0
  869. package/src/motion/replication2/metrics.ts +7 -0
  870. package/src/motion/replication2/presets.ts +63 -0
  871. package/src/motion/replication2/riv.ts +4 -0
  872. package/src/motion/replication2/rive-contract.ts +165 -0
  873. package/src/motion/replication2/template.ts +33 -0
  874. package/src/motion/sample.ts +173 -0
  875. package/src/motion/templates/hey-template.ts +1553 -0
  876. package/src/motion/templates/index.ts +17 -0
  877. package/src/motion/templates/word-motion.ts +1166 -0
  878. package/src/motion/types.ts +162 -0
  879. package/src/motion/typesurface/TypeSurfaceCanvas.tsx +101 -0
  880. package/src/motion/typesurface/art.ts +639 -0
  881. package/src/motion/typesurface/config.ts +512 -0
  882. package/src/motion/typesurface/construct.ts +828 -0
  883. package/src/motion/typesurface/engine.ts +612 -0
  884. package/src/motion/typesurface/fonts.ts +63 -0
  885. package/src/motion/typesurface/index.ts +20 -0
  886. package/src/motion/typesurface/layout.ts +133 -0
  887. package/src/motion/typesurface/ops.ts +196 -0
  888. package/src/motion/typesurface/presets.ts +271 -0
  889. package/src/motion/typesurface/renderer.ts +639 -0
  890. package/src/motion/typesurface/shaders.ts +325 -0
  891. package/src/motion/typesurface/surfaces.ts +300 -0
  892. package/src/motion/typesurface/text.ts +35 -0
  893. package/src/motion/typesurface/timeline.ts +58 -0
  894. package/src/motion/validate.ts +101 -0
  895. package/src/native/RiveReceiptStage.tsx +8 -155
  896. package/src/native/riveReceiptStageFactory.tsx +175 -0
  897. package/src/tokens/stage.ts +6 -0
  898. package/tools/ask/dist/components.mjs +8010 -88
  899. package/tools/ask/dist/neon.js +69 -0
  900. package/tools/ask/mcp.mjs +166 -2
  901. package/tools/ask/neon-render.mjs +143 -0
@@ -0,0 +1,319 @@
1
+ /**
2
+ * **The neon sign's configuration** — one plain JSON object that says everything about a sign. The
3
+ * four concerns never reach into each other:
4
+ *
5
+ * text what the sign says ("CAFE", "OPEN\n24/7", anything)
6
+ * typography how the letters are shaped: font, size, weight, spacing, tube width, construction
7
+ * neon the material: tube, core, glow and bloom colours, intensity, radii, shadow
8
+ * animation flicker and glitch: on/off, intensity, frequency, speed, seed
9
+ *
10
+ * So CAFE → OPEN → 24/7 changes `text` only, and RED → BLUE changes `neon` only. Units: `fontSize`,
11
+ * widths and radii are SVG user units (px at scale 1); times are ms; frequencies are events per
12
+ * second. Measured defaults come from the Vecteezy 7356951 reference (`docs/NEON-TEXT.md`).
13
+ */
14
+ export declare const NEON_CONSTRUCTIONS: readonly ["outline", "monoline"];
15
+ /**
16
+ * How the tube follows the letter.
17
+ * - `outline`: one tube traces each glyph's outline (the reference's CAFE). Any font works.
18
+ * - `monoline`: the glyph is the tube: filled and stroked with round joins (the reference's 24/7).
19
+ * Light, rounded fonts read best; the glyph's own stem is the hot core.
20
+ */
21
+ export type NeonConstruction = (typeof NEON_CONSTRUCTIONS)[number];
22
+ export declare const NEON_ALIGNS: readonly ["start", "middle", "end"];
23
+ export type NeonAlign = (typeof NEON_ALIGNS)[number];
24
+ export type NeonTypography = {
25
+ /** Any CSS font-family list. The font must be loaded by the page; nothing is converted to paths. */
26
+ fontFamily: string;
27
+ fontSize: number;
28
+ fontWeight: number;
29
+ fontStyle: 'normal' | 'italic';
30
+ /** Extra space between letters, in user units. */
31
+ letterSpacing: number;
32
+ /** Line pitch as a multiple of fontSize, for multi-line text ("OPEN\n24/7"). */
33
+ lineHeight: number;
34
+ /** The glass tube's width, in user units. The reference's outline tube is ≈ 0.033 × fontSize. */
35
+ strokeWidth: number;
36
+ construction: NeonConstruction;
37
+ align: NeonAlign;
38
+ };
39
+ export type NeonShadow = {
40
+ enabled: boolean;
41
+ color: string;
42
+ opacity: number;
43
+ /** Offset as a fraction of fontSize; the reference casts its shadow down and to the right. */
44
+ offsetX: number;
45
+ offsetY: number;
46
+ /** Blur radius, in user units. */
47
+ blur: number;
48
+ };
49
+ export type NeonMaterialConfig = {
50
+ /** The primary neon colour. Every colour below that is null is derived from it. */
51
+ color: string;
52
+ /** The hot centre line. null → nearly white, tinted by `color`. */
53
+ coreColor: string | null;
54
+ /** The lit glass. null → `color`. */
55
+ tubeColor: string | null;
56
+ /** The tight coloured halo. null → a deeper, more saturated `color`. */
57
+ glowColor: string | null;
58
+ /** The wide light thrown on the wall. null → a dark, saturated `color`. */
59
+ bloomColor: string | null;
60
+ /** Glow and bloom strength: 0 is a bare tube, 1 the reference, up to 3. */
61
+ intensity: number;
62
+ /** The bloom's own strength, on top of `intensity` (1 = as the reference). */
63
+ bloomIntensity: number;
64
+ /** How bright the lit tube is (1 = full; lower shows more dark glass). */
65
+ tubeBrightness: number;
66
+ /** How bright the hot core is (1 = full; 0 hides it). */
67
+ coreBrightness: number;
68
+ /** How far the tight glow reaches, in user units. */
69
+ glowRadius: number;
70
+ /** How far the wall bloom reaches, in user units. */
71
+ bloomRadius: number;
72
+ /** The hot core's width as a fraction of the tube (outline construction). Reference: 0.47. */
73
+ coreWidth: number;
74
+ /** How visible the unlit glass is when the tube dims (0 hides it). */
75
+ glassOpacity: number;
76
+ shadow: NeonShadow;
77
+ };
78
+ export type NeonAnimationConfig = {
79
+ enabled: boolean;
80
+ /** Plays everything faster (2) or slower (0.5). */
81
+ speed: number;
82
+ /** Same seed, same performance. Change it to get a different, equally natural one. */
83
+ seed: number;
84
+ flickerEnabled: boolean;
85
+ /** 0 is a steady tube; 0.25 plays the full hardware ranges (dips to 40–80 %, failures to 20–50 %); 1 is a failing transformer. */
86
+ flickerIntensity: number;
87
+ /** Noticeable flicker events (sags, dips, failures) per second. 0.08 ≈ one every 12 s. */
88
+ flickerFrequency: number;
89
+ /** How fast each flicker event plays, on top of `speed`. */
90
+ flickerSpeed: number;
91
+ /** 0: every event plays its typical shape and depth, evenly; 1: depths, lengths and the hum vary widely. */
92
+ flickerRandomness: number;
93
+ /** How fast the tube recovers after a dip or failure: 0 slow (≈ 300 ms tail), 1 instant. */
94
+ flickerRecovery: number;
95
+ /** The floor: the tube never falls below this brightness (0…1). */
96
+ flickerMinBrightness: number;
97
+ glitchEnabled: boolean;
98
+ /** 0 is none; 1 is the most a readable sign should glitch. */
99
+ glitchIntensity: number;
100
+ /** Glitches per second. 0.04 ≈ one every 25 s. */
101
+ glitchFrequency: number;
102
+ /** A glitch's typical length, in ms. */
103
+ glitchDuration: number;
104
+ /** Scales the whole-sign sideways jump (0 none, 1 default, 2 double). */
105
+ glitchDisplacement: number;
106
+ /** Scales the red/cyan split. */
107
+ glitchRgbSplit: number;
108
+ /** Scales the sliced bands' shift. */
109
+ glitchSlices: number;
110
+ /** Scales how far the glow slips from the tube. */
111
+ glitchGlowSeparation: number;
112
+ };
113
+ export type NeonTextConfig = {
114
+ text: string;
115
+ typography: NeonTypography;
116
+ neon: NeonMaterialConfig;
117
+ animation: NeonAnimationConfig;
118
+ /** A colour behind the sign, or null for transparent. */
119
+ background: string | null;
120
+ };
121
+ export type DeepPartial<T> = {
122
+ [K in keyof T]?: T[K] extends object ? (T[K] extends unknown[] ? T[K] : DeepPartial<T[K]> | null) : T[K];
123
+ };
124
+ export type NeonTextConfigInput = DeepPartial<NeonTextConfig>;
125
+ export declare const DEFAULT_NEON_CONFIG: NeonTextConfig;
126
+ /** The four neon colours of each preset, from the brief. `color` is the tube. */
127
+ export type NeonColorPreset = Pick<NeonMaterialConfig, 'color'> & {
128
+ coreColor: string;
129
+ tubeColor: string;
130
+ glowColor: string;
131
+ bloomColor: string;
132
+ };
133
+ export declare const NEON_COLOR_PRESETS: {
134
+ red: {
135
+ color: string;
136
+ coreColor: string;
137
+ tubeColor: string;
138
+ glowColor: string;
139
+ bloomColor: string;
140
+ };
141
+ blue: {
142
+ color: string;
143
+ coreColor: string;
144
+ tubeColor: string;
145
+ glowColor: string;
146
+ bloomColor: string;
147
+ };
148
+ purple: {
149
+ color: string;
150
+ coreColor: string;
151
+ tubeColor: string;
152
+ glowColor: string;
153
+ bloomColor: string;
154
+ };
155
+ green: {
156
+ color: string;
157
+ coreColor: string;
158
+ tubeColor: string;
159
+ glowColor: string;
160
+ bloomColor: string;
161
+ };
162
+ };
163
+ export type NeonColorPresetId = keyof typeof NEON_COLOR_PRESETS;
164
+ /** Text presets: the words, and the letterform that suits them. Material and animation are untouched. */
165
+ export declare const NEON_TEXT_PRESETS: {
166
+ cafe: {
167
+ text: string;
168
+ typography: {
169
+ construction: "outline";
170
+ fontFamily: string;
171
+ fontWeight: number;
172
+ strokeWidth: number;
173
+ letterSpacing: number;
174
+ };
175
+ };
176
+ open: {
177
+ text: string;
178
+ typography: {
179
+ construction: "outline";
180
+ fontFamily: string;
181
+ fontWeight: number;
182
+ strokeWidth: number;
183
+ letterSpacing: number;
184
+ };
185
+ };
186
+ night: {
187
+ text: string;
188
+ typography: {
189
+ construction: "outline";
190
+ fontFamily: string;
191
+ fontWeight: number;
192
+ strokeWidth: number;
193
+ letterSpacing: number;
194
+ };
195
+ };
196
+ '24/7': {
197
+ text: string;
198
+ typography: {
199
+ construction: "monoline";
200
+ fontFamily: string;
201
+ fontWeight: number;
202
+ strokeWidth: number;
203
+ letterSpacing: number;
204
+ };
205
+ };
206
+ hello: {
207
+ text: string;
208
+ typography: {
209
+ construction: "monoline";
210
+ fontFamily: string;
211
+ fontWeight: number;
212
+ strokeWidth: number;
213
+ letterSpacing: number;
214
+ };
215
+ };
216
+ };
217
+ export type NeonTextPresetId = keyof typeof NEON_TEXT_PRESETS;
218
+ export declare const isHexColor: (v: unknown) => v is string;
219
+ export declare function hexToRgb(hex: string): [number, number, number];
220
+ export declare const rgbToHex: (rgb: readonly number[]) => string;
221
+ export declare function mixHex(a: string, b: string, t: number): string;
222
+ /**
223
+ * **One colour in, a whole neon palette out.** Fitted to the brief's four presets: the glow is the
224
+ * same hue a little deeper and fully saturated; the bloom is darker still and drifts a few degrees
225
+ * toward blue (a lit wall reads cooler than the tube); the core is the colour at 6 % over white.
226
+ */
227
+ export declare function deriveNeonPalette(color: string): {
228
+ coreColor: string;
229
+ tubeColor: string;
230
+ glowColor: string;
231
+ bloomColor: string;
232
+ };
233
+ /**
234
+ * **The flat props an agent or a JSX author reaches for**, mapped onto the config. Every one is
235
+ * optional; each wins over the same value in `config`.
236
+ */
237
+ export type NeonTextShorthand = {
238
+ text?: string;
239
+ fontFamily?: string;
240
+ fontSize?: number;
241
+ fontWeight?: number;
242
+ fontStyle?: 'normal' | 'italic';
243
+ letterSpacing?: number;
244
+ lineHeight?: number;
245
+ strokeWidth?: number;
246
+ construction?: NeonConstruction;
247
+ align?: NeonAlign;
248
+ /** The primary colour: glow, bloom and core follow it unless set themselves. */
249
+ neonColor?: string;
250
+ tubeColor?: string;
251
+ coreColor?: string;
252
+ glowColor?: string;
253
+ bloomColor?: string;
254
+ glowIntensity?: number;
255
+ glowRadius?: number;
256
+ bloomRadius?: number;
257
+ shadow?: boolean;
258
+ /** Animation on/off (flicker and glitch together). */
259
+ animated?: boolean;
260
+ animationSpeed?: number;
261
+ seed?: number;
262
+ flicker?: boolean;
263
+ flickerIntensity?: number;
264
+ flickerFrequency?: number;
265
+ flickerSpeed?: number;
266
+ glitch?: boolean;
267
+ glitchIntensity?: number;
268
+ glitchFrequency?: number;
269
+ glitchDuration?: number;
270
+ background?: string | null;
271
+ };
272
+ export declare const NEON_SHORTHAND_KEYS: readonly ["text", "fontFamily", "fontSize", "fontWeight", "fontStyle", "letterSpacing", "lineHeight", "strokeWidth", "construction", "align", "neonColor", "tubeColor", "coreColor", "glowColor", "bloomColor", "glowIntensity", "glowRadius", "bloomRadius", "shadow", "animated", "animationSpeed", "seed", "flicker", "flickerIntensity", "flickerFrequency", "flickerSpeed", "glitch", "glitchIntensity", "glitchFrequency", "glitchDuration", "background"];
273
+ /** Shorthand props → a config patch (only the keys that were given). */
274
+ export declare function shorthandToConfig(p: NeonTextShorthand): NeonTextConfigInput;
275
+ /**
276
+ * **defaults ← config ← shorthand props.** When the primary colour changes (`neon.color` or the
277
+ * `neonColor` prop) and a derived colour was not given at the same level, that colour is re-derived,
278
+ * so `{ neon: { color: '#00D9FF' } }` alone turns the whole sign blue.
279
+ */
280
+ export declare function resolveNeonConfig(input?: NeonTextConfigInput | null, shorthand?: NeonTextShorthand): NeonTextConfig;
281
+ /** The effective four colours: each explicit one, or derived from `color`. */
282
+ export declare function neonColors(neon: NeonMaterialConfig): {
283
+ coreColor: string;
284
+ tubeColor: string;
285
+ glowColor: string;
286
+ bloomColor: string;
287
+ };
288
+ export type NeonConfigError = {
289
+ path: string;
290
+ message: string;
291
+ };
292
+ export type NeonControl = {
293
+ path: string;
294
+ label: string;
295
+ group: 'Text' | 'Typography' | 'Colour' | 'Light' | 'Flicker' | 'Glitch' | 'Animation';
296
+ type: 'text' | 'number' | 'color' | 'boolean' | 'enum' | 'color-or-null';
297
+ min?: number;
298
+ max?: number;
299
+ step?: number;
300
+ unit?: string;
301
+ options?: readonly string[];
302
+ description: string;
303
+ };
304
+ /** Every editable value, with its range. The playground draws its controls from this; `validateNeonConfig` checks against it. */
305
+ export declare const NEON_CONTROLS: NeonControl[];
306
+ export declare function getPath(obj: unknown, path: string): unknown;
307
+ export declare function setPath<T>(obj: T, path: string, value: unknown): T;
308
+ export declare const MAX_NEON_TEXT_LENGTH = 200;
309
+ /** `[]` when the config can be drawn; otherwise every problem as `{ path, message }`. Never throws. */
310
+ export declare function validateNeonConfig(config: unknown): NeonConfigError[];
311
+ /**
312
+ * **A config that can always be drawn.** Every field that fails validation is replaced by its
313
+ * default, and the problems are returned alongside, so a renderer never crashes and never half-draws.
314
+ */
315
+ export declare function sanitizeNeonConfig(config: unknown): {
316
+ config: NeonTextConfig;
317
+ errors: NeonConfigError[];
318
+ };
319
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/motion/neon/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,319 @@
1
+ /* eslint-disable comppack/no-raw-colour -- neon colours are sign content (the brief's presets), not theme colours. */
2
+ /**
3
+ * **The neon sign's configuration** — one plain JSON object that says everything about a sign. The
4
+ * four concerns never reach into each other:
5
+ *
6
+ * text what the sign says ("CAFE", "OPEN\n24/7", anything)
7
+ * typography how the letters are shaped: font, size, weight, spacing, tube width, construction
8
+ * neon the material: tube, core, glow and bloom colours, intensity, radii, shadow
9
+ * animation flicker and glitch: on/off, intensity, frequency, speed, seed
10
+ *
11
+ * So CAFE → OPEN → 24/7 changes `text` only, and RED → BLUE changes `neon` only. Units: `fontSize`,
12
+ * widths and radii are SVG user units (px at scale 1); times are ms; frequencies are events per
13
+ * second. Measured defaults come from the Vecteezy 7356951 reference (`docs/NEON-TEXT.md`).
14
+ */
15
+ export const NEON_CONSTRUCTIONS = ['outline', 'monoline'];
16
+ export const NEON_ALIGNS = ['start', 'middle', 'end'];
17
+ export const DEFAULT_NEON_CONFIG = {
18
+ text: 'CAFE',
19
+ typography: {
20
+ fontFamily: "Oswald, 'Arial Narrow', 'Helvetica Neue', Arial, sans-serif",
21
+ fontSize: 220,
22
+ fontWeight: 500,
23
+ fontStyle: 'normal',
24
+ letterSpacing: 4,
25
+ lineHeight: 1.15,
26
+ strokeWidth: 8,
27
+ construction: 'outline',
28
+ align: 'middle',
29
+ },
30
+ neon: {
31
+ color: '#FF4655',
32
+ coreColor: '#FFF5F5',
33
+ tubeColor: '#FF4655',
34
+ glowColor: '#FF1838',
35
+ bloomColor: '#D4002F',
36
+ intensity: 1,
37
+ bloomIntensity: 1,
38
+ tubeBrightness: 1,
39
+ coreBrightness: 1,
40
+ glowRadius: 20,
41
+ bloomRadius: 70,
42
+ coreWidth: 0.47,
43
+ glassOpacity: 0.16,
44
+ shadow: { enabled: true, color: '#000000', opacity: 0.5, offsetX: 0.035, offsetY: 0.045, blur: 6 },
45
+ },
46
+ animation: {
47
+ enabled: true,
48
+ speed: 1,
49
+ seed: 7356951,
50
+ flickerEnabled: true,
51
+ flickerIntensity: 0.15,
52
+ flickerFrequency: 0.08,
53
+ flickerSpeed: 1,
54
+ flickerRandomness: 0.6,
55
+ flickerRecovery: 0.7,
56
+ flickerMinBrightness: 0.05,
57
+ glitchEnabled: true,
58
+ glitchIntensity: 0.15,
59
+ glitchFrequency: 0.04,
60
+ glitchDuration: 180,
61
+ glitchDisplacement: 1,
62
+ glitchRgbSplit: 1,
63
+ glitchSlices: 1,
64
+ glitchGlowSeparation: 1,
65
+ },
66
+ background: null,
67
+ };
68
+ export const NEON_COLOR_PRESETS = {
69
+ red: { color: '#FF3B4D', coreColor: '#FFF5F5', tubeColor: '#FF3B4D', glowColor: '#FF1744', bloomColor: '#C40030' },
70
+ blue: { color: '#00D9FF', coreColor: '#F5FFFF', tubeColor: '#00D9FF', glowColor: '#009DFF', bloomColor: '#0055FF' },
71
+ purple: { color: '#D66BFF', coreColor: '#FFF5FF', tubeColor: '#D66BFF', glowColor: '#9C27FF', bloomColor: '#5E00B8' },
72
+ green: { color: '#39FF88', coreColor: '#F5FFF5', tubeColor: '#39FF88', glowColor: '#00D95F', bloomColor: '#008F3D' },
73
+ };
74
+ /** Text presets: the words, and the letterform that suits them. Material and animation are untouched. */
75
+ export const NEON_TEXT_PRESETS = {
76
+ cafe: { text: 'CAFE', typography: { construction: 'outline', fontFamily: DEFAULT_NEON_CONFIG.typography.fontFamily, fontWeight: 500, strokeWidth: 8, letterSpacing: 4 } },
77
+ open: { text: 'OPEN', typography: { construction: 'outline', fontFamily: DEFAULT_NEON_CONFIG.typography.fontFamily, fontWeight: 500, strokeWidth: 8, letterSpacing: 10 } },
78
+ night: { text: 'NIGHT', typography: { construction: 'outline', fontFamily: DEFAULT_NEON_CONFIG.typography.fontFamily, fontWeight: 500, strokeWidth: 8, letterSpacing: 6 } },
79
+ '24/7': { text: '24/7', typography: { construction: 'monoline', fontFamily: "Quicksand, 'Arial Rounded MT Bold', 'Helvetica Neue', Arial, sans-serif", fontWeight: 500, strokeWidth: 10, letterSpacing: 2 } },
80
+ hello: { text: 'Hello', typography: { construction: 'monoline', fontFamily: "Sacramento, 'Snell Roundhand', 'Brush Script MT', cursive", fontWeight: 400, strokeWidth: 7, letterSpacing: 0 } },
81
+ };
82
+ /* ---------- colour helpers (pure) ---------- */
83
+ const HEX = /^#([0-9a-f]{3}|[0-9a-f]{6})$/i;
84
+ export const isHexColor = (v) => typeof v === 'string' && HEX.test(v);
85
+ export function hexToRgb(hex) {
86
+ const h = hex.length === 4 ? hex.slice(1).split('').map((c) => c + c).join('') : hex.slice(1);
87
+ return [parseInt(h.slice(0, 2), 16), parseInt(h.slice(2, 4), 16), parseInt(h.slice(4, 6), 16)];
88
+ }
89
+ export const rgbToHex = (rgb) => '#' + rgb.map((v) => Math.round(Math.max(0, Math.min(255, v))).toString(16).padStart(2, '0')).join('').toUpperCase();
90
+ export function mixHex(a, b, t) {
91
+ const x = hexToRgb(a);
92
+ const y = hexToRgb(b);
93
+ return rgbToHex(x.map((v, i) => v + (y[i] - v) * t));
94
+ }
95
+ function toHsl([r, g, b]) {
96
+ const [R, G, B] = [r / 255, g / 255, b / 255];
97
+ const max = Math.max(R, G, B);
98
+ const min = Math.min(R, G, B);
99
+ const l = (max + min) / 2;
100
+ if (max === min)
101
+ return [0, 0, l];
102
+ const d = max - min;
103
+ const s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
104
+ const h = max === R ? (G - B) / d + (G < B ? 6 : 0) : max === G ? (B - R) / d + 2 : (R - G) / d + 4;
105
+ return [h * 60, s, l];
106
+ }
107
+ function fromHsl(h, s, l) {
108
+ const k = (n) => (n + h / 30) % 12;
109
+ const a = s * Math.min(l, 1 - l);
110
+ const f = (n) => l - a * Math.max(-1, Math.min(k(n) - 3, Math.min(9 - k(n), 1)));
111
+ return rgbToHex([f(0) * 255, f(8) * 255, f(4) * 255]);
112
+ }
113
+ /**
114
+ * **One colour in, a whole neon palette out.** Fitted to the brief's four presets: the glow is the
115
+ * same hue a little deeper and fully saturated; the bloom is darker still and drifts a few degrees
116
+ * toward blue (a lit wall reads cooler than the tube); the core is the colour at 6 % over white.
117
+ */
118
+ export function deriveNeonPalette(color) {
119
+ const base = isHexColor(color) ? color : DEFAULT_NEON_CONFIG.neon.color;
120
+ const [h, s, l] = toHsl(hexToRgb(base));
121
+ const drift = (deg) => (s < 0.08 ? h : (h + deg + 360) % 360);
122
+ return {
123
+ coreColor: mixHex(base, '#FFFFFF', 0.94),
124
+ tubeColor: rgbToHex(hexToRgb(base)),
125
+ glowColor: fromHsl(drift(-6), Math.min(1, s + 0.15), Math.max(0.3, l * 0.84)),
126
+ bloomColor: fromHsl(drift(-10), Math.min(1, s + 0.2), Math.max(0.18, l * 0.6)),
127
+ };
128
+ }
129
+ /* ---------- resolving ---------- */
130
+ const isObj = (v) => typeof v === 'object' && v !== null && !Array.isArray(v);
131
+ function merge(base, over) {
132
+ if (!isObj(base) || !isObj(over))
133
+ return (over === undefined ? base : over);
134
+ const out = { ...base };
135
+ for (const [k, v] of Object.entries(over)) {
136
+ if (v === undefined)
137
+ continue;
138
+ out[k] = isObj(out[k]) && isObj(v) ? merge(out[k], v) : v;
139
+ }
140
+ return out;
141
+ }
142
+ export const NEON_SHORTHAND_KEYS = [
143
+ 'text', 'fontFamily', 'fontSize', 'fontWeight', 'fontStyle', 'letterSpacing', 'lineHeight', 'strokeWidth', 'construction', 'align',
144
+ 'neonColor', 'tubeColor', 'coreColor', 'glowColor', 'bloomColor', 'glowIntensity', 'glowRadius', 'bloomRadius', 'shadow',
145
+ 'animated', 'animationSpeed', 'seed', 'flicker', 'flickerIntensity', 'flickerFrequency', 'flickerSpeed',
146
+ 'glitch', 'glitchIntensity', 'glitchFrequency', 'glitchDuration', 'background',
147
+ ];
148
+ /** Shorthand props → a config patch (only the keys that were given). */
149
+ export function shorthandToConfig(p) {
150
+ const drop = (o) => Object.fromEntries(Object.entries(o).filter(([, v]) => v !== undefined));
151
+ const out = {};
152
+ if (p.text !== undefined)
153
+ out.text = p.text;
154
+ if (p.background !== undefined)
155
+ out.background = p.background;
156
+ out.typography = drop({
157
+ fontFamily: p.fontFamily, fontSize: p.fontSize, fontWeight: p.fontWeight, fontStyle: p.fontStyle, letterSpacing: p.letterSpacing,
158
+ lineHeight: p.lineHeight, strokeWidth: p.strokeWidth, construction: p.construction, align: p.align,
159
+ });
160
+ out.neon = drop({
161
+ color: p.neonColor, tubeColor: p.tubeColor, coreColor: p.coreColor, glowColor: p.glowColor, bloomColor: p.bloomColor,
162
+ intensity: p.glowIntensity, glowRadius: p.glowRadius, bloomRadius: p.bloomRadius,
163
+ });
164
+ if (p.shadow !== undefined)
165
+ out.neon.shadow = { enabled: p.shadow };
166
+ out.animation = drop({
167
+ enabled: p.animated, speed: p.animationSpeed, seed: p.seed, flickerEnabled: p.flicker, flickerIntensity: p.flickerIntensity,
168
+ flickerFrequency: p.flickerFrequency, flickerSpeed: p.flickerSpeed, glitchEnabled: p.glitch, glitchIntensity: p.glitchIntensity,
169
+ glitchFrequency: p.glitchFrequency, glitchDuration: p.glitchDuration,
170
+ });
171
+ return out;
172
+ }
173
+ /**
174
+ * **defaults ← config ← shorthand props.** When the primary colour changes (`neon.color` or the
175
+ * `neonColor` prop) and a derived colour was not given at the same level, that colour is re-derived,
176
+ * so `{ neon: { color: '#00D9FF' } }` alone turns the whole sign blue.
177
+ */
178
+ export function resolveNeonConfig(input, shorthand) {
179
+ let config = DEFAULT_NEON_CONFIG;
180
+ for (const layer of [isObj(input) ? input : undefined, shorthand ? shorthandToConfig(shorthand) : undefined]) {
181
+ if (!layer)
182
+ continue;
183
+ const neon = isObj(layer.neon) ? layer.neon : undefined;
184
+ const primary = neon && typeof neon.color === 'string' ? neon.color : neon && typeof neon.tubeColor === 'string' && neon.color === undefined ? neon.tubeColor : undefined;
185
+ config = merge(config, layer);
186
+ if (primary !== undefined && isHexColor(primary)) {
187
+ const derived = deriveNeonPalette(primary);
188
+ const n = { ...config.neon, color: primary };
189
+ for (const k of ['coreColor', 'tubeColor', 'glowColor', 'bloomColor'])
190
+ if (neon[k] === undefined)
191
+ n[k] = derived[k];
192
+ config = { ...config, neon: n };
193
+ }
194
+ }
195
+ return config;
196
+ }
197
+ /** The effective four colours: each explicit one, or derived from `color`. */
198
+ export function neonColors(neon) {
199
+ const d = deriveNeonPalette(neon.color);
200
+ return {
201
+ coreColor: isHexColor(neon.coreColor) ? neon.coreColor : d.coreColor,
202
+ tubeColor: isHexColor(neon.tubeColor) ? neon.tubeColor : d.tubeColor,
203
+ glowColor: isHexColor(neon.glowColor) ? neon.glowColor : d.glowColor,
204
+ bloomColor: isHexColor(neon.bloomColor) ? neon.bloomColor : d.bloomColor,
205
+ };
206
+ }
207
+ /** Every editable value, with its range. The playground draws its controls from this; `validateNeonConfig` checks against it. */
208
+ export const NEON_CONTROLS = [
209
+ { path: 'text', label: 'Text', group: 'Text', type: 'text', description: 'What the sign says. A new line (\\n) starts a second row.' },
210
+ { path: 'typography.fontFamily', label: 'Font', group: 'Typography', type: 'text', description: 'A CSS font-family list; the page must load the font.' },
211
+ { path: 'typography.fontSize', label: 'Font size', group: 'Typography', type: 'number', min: 12, max: 1000, step: 1, unit: 'units', description: 'The em size, in SVG user units.' },
212
+ { path: 'typography.fontWeight', label: 'Font weight', group: 'Typography', type: 'number', min: 100, max: 900, step: 100, description: 'CSS font-weight.' },
213
+ { path: 'typography.fontStyle', label: 'Font style', group: 'Typography', type: 'enum', options: ['normal', 'italic'], description: 'Upright or italic.' },
214
+ { path: 'typography.letterSpacing', label: 'Letter spacing', group: 'Typography', type: 'number', min: -50, max: 200, step: 1, unit: 'units', description: 'Extra space between letters.' },
215
+ { path: 'typography.lineHeight', label: 'Line height', group: 'Typography', type: 'number', min: 0.6, max: 3, step: 0.05, unit: '× size', description: 'Row pitch for multi-line text.' },
216
+ { path: 'typography.strokeWidth', label: 'Tube width', group: 'Typography', type: 'number', min: 0.5, max: 80, step: 0.5, unit: 'units', description: 'The glass tube. The reference is ≈ 0.033 × font size.' },
217
+ { path: 'typography.construction', label: 'Construction', group: 'Typography', type: 'enum', options: NEON_CONSTRUCTIONS, description: 'outline: the tube traces each letter (CAFE). monoline: the letter is the tube (24/7).' },
218
+ { path: 'typography.align', label: 'Align', group: 'Typography', type: 'enum', options: NEON_ALIGNS, description: 'Row alignment for multi-line text.' },
219
+ { path: 'neon.color', label: 'Neon colour', group: 'Colour', type: 'color', description: 'The primary colour; the others follow it unless set.' },
220
+ { path: 'neon.tubeColor', label: 'Tube colour', group: 'Colour', type: 'color-or-null', description: 'The lit glass. null follows the neon colour.' },
221
+ { path: 'neon.coreColor', label: 'Core colour', group: 'Colour', type: 'color-or-null', description: 'The hot centre line. null follows the neon colour.' },
222
+ { path: 'neon.glowColor', label: 'Glow colour', group: 'Colour', type: 'color-or-null', description: 'The tight halo. null follows the neon colour.' },
223
+ { path: 'neon.bloomColor', label: 'Bloom colour', group: 'Colour', type: 'color-or-null', description: 'The light on the wall. null follows the neon colour.' },
224
+ { path: 'neon.intensity', label: 'Glow intensity', group: 'Light', type: 'number', min: 0, max: 3, step: 0.05, description: '0 is a bare tube; 1 the reference.' },
225
+ { path: 'neon.bloomIntensity', label: 'Bloom intensity', group: 'Light', type: 'number', min: 0, max: 3, step: 0.05, description: 'The wall bloom’s own strength.' },
226
+ { path: 'neon.tubeBrightness', label: 'Tube brightness', group: 'Light', type: 'number', min: 0, max: 1.5, step: 0.01, description: 'How bright the lit glass is.' },
227
+ { path: 'neon.coreBrightness', label: 'Core brightness', group: 'Light', type: 'number', min: 0, max: 1.5, step: 0.01, description: 'How bright the hot centre line is.' },
228
+ { path: 'neon.glowRadius', label: 'Glow radius', group: 'Light', type: 'number', min: 0, max: 200, step: 1, unit: 'units', description: 'Reach of the tight halo.' },
229
+ { path: 'neon.bloomRadius', label: 'Bloom radius', group: 'Light', type: 'number', min: 0, max: 400, step: 1, unit: 'units', description: 'Reach of the wall bloom.' },
230
+ { path: 'neon.coreWidth', label: 'Core width', group: 'Light', type: 'number', min: 0, max: 1, step: 0.01, unit: '× tube', description: 'The hot core, as a share of the tube.' },
231
+ { path: 'neon.glassOpacity', label: 'Unlit glass', group: 'Light', type: 'number', min: 0, max: 1, step: 0.01, description: 'How much dark glass shows when the tube dims.' },
232
+ { path: 'neon.shadow.enabled', label: 'Shadow', group: 'Light', type: 'boolean', description: 'The tube’s dark cast shadow on the wall.' },
233
+ { path: 'neon.shadow.color', label: 'Shadow colour', group: 'Light', type: 'color', description: 'Shadow colour.' },
234
+ { path: 'neon.shadow.opacity', label: 'Shadow opacity', group: 'Light', type: 'number', min: 0, max: 1, step: 0.01, description: 'Shadow strength.' },
235
+ { path: 'neon.shadow.offsetX', label: 'Shadow x', group: 'Light', type: 'number', min: -0.5, max: 0.5, step: 0.005, unit: '× size', description: 'Shadow offset, across.' },
236
+ { path: 'neon.shadow.offsetY', label: 'Shadow y', group: 'Light', type: 'number', min: -0.5, max: 0.5, step: 0.005, unit: '× size', description: 'Shadow offset, down.' },
237
+ { path: 'neon.shadow.blur', label: 'Shadow blur', group: 'Light', type: 'number', min: 0, max: 100, step: 0.5, unit: 'units', description: 'Shadow softness.' },
238
+ { path: 'animation.enabled', label: 'Animation', group: 'Animation', type: 'boolean', description: 'Flicker and glitch on or off.' },
239
+ { path: 'animation.speed', label: 'Animation speed', group: 'Animation', type: 'number', min: 0.1, max: 5, step: 0.05, unit: '×', description: 'Plays everything faster or slower.' },
240
+ { path: 'animation.seed', label: 'Seed', group: 'Animation', type: 'number', min: 0, max: 4294967295, step: 1, description: 'Same seed, same performance.' },
241
+ { path: 'animation.flickerEnabled', label: 'Flicker', group: 'Flicker', type: 'boolean', description: 'Brightness flicker on or off.' },
242
+ { path: 'animation.flickerIntensity', label: 'Flicker intensity', group: 'Flicker', type: 'number', min: 0, max: 1, step: 0.01, description: '0.25 plays the full hardware ranges.' },
243
+ { path: 'animation.flickerFrequency', label: 'Flicker frequency', group: 'Flicker', type: 'number', min: 0, max: 5, step: 0.01, unit: '/ s', description: 'Noticeable flicker events per second.' },
244
+ { path: 'animation.flickerSpeed', label: 'Flicker speed', group: 'Flicker', type: 'number', min: 0.1, max: 5, step: 0.05, unit: '×', description: 'How fast each flicker event plays.' },
245
+ { path: 'animation.flickerRandomness', label: 'Randomness', group: 'Flicker', type: 'number', min: 0, max: 1, step: 0.01, description: 'How much events vary in depth and length.' },
246
+ { path: 'animation.flickerRecovery', label: 'Recovery speed', group: 'Flicker', type: 'number', min: 0, max: 1, step: 0.01, description: 'How fast the tube comes back after a dip or failure.' },
247
+ { path: 'animation.flickerMinBrightness', label: 'Minimum brightness', group: 'Flicker', type: 'number', min: 0, max: 1, step: 0.01, description: 'The tube never falls below this.' },
248
+ { path: 'animation.glitchEnabled', label: 'Glitch', group: 'Glitch', type: 'boolean', description: 'Occasional glitches on or off.' },
249
+ { path: 'animation.glitchIntensity', label: 'Glitch intensity', group: 'Glitch', type: 'number', min: 0, max: 1, step: 0.01, description: 'How far slices shift and colours split.' },
250
+ { path: 'animation.glitchFrequency', label: 'Glitch frequency', group: 'Glitch', type: 'number', min: 0, max: 5, step: 0.01, unit: '/ s', description: 'Glitches per second.' },
251
+ { path: 'animation.glitchDuration', label: 'Glitch duration', group: 'Glitch', type: 'number', min: 20, max: 2000, step: 10, unit: 'ms', description: 'A glitch’s typical length.' },
252
+ { path: 'animation.glitchDisplacement', label: 'Horizontal displacement', group: 'Glitch', type: 'number', min: 0, max: 2, step: 0.05, unit: '×', description: 'The whole-sign sideways jump.' },
253
+ { path: 'animation.glitchRgbSplit', label: 'RGB separation', group: 'Glitch', type: 'number', min: 0, max: 2, step: 0.05, unit: '×', description: 'The red/cyan split.' },
254
+ { path: 'animation.glitchSlices', label: 'Slice displacement', group: 'Glitch', type: 'number', min: 0, max: 2, step: 0.05, unit: '×', description: 'How far the sliced bands shift.' },
255
+ { path: 'animation.glitchGlowSeparation', label: 'Glow separation', group: 'Glitch', type: 'number', min: 0, max: 2, step: 0.05, unit: '×', description: 'How far the glow slips from the tube.' },
256
+ { path: 'background', label: 'Background', group: 'Colour', type: 'color-or-null', description: 'A colour behind the sign, or null for transparent.' },
257
+ ];
258
+ export function getPath(obj, path) {
259
+ return path.split('.').reduce((o, k) => (isObj(o) ? o[k] : undefined), obj);
260
+ }
261
+ export function setPath(obj, path, value) {
262
+ const [head, ...rest] = path.split('.');
263
+ const o = (isObj(obj) ? obj : {});
264
+ return { ...o, [head]: rest.length ? setPath(o[head], rest.join('.'), value) : value };
265
+ }
266
+ export const MAX_NEON_TEXT_LENGTH = 200;
267
+ /** `[]` when the config can be drawn; otherwise every problem as `{ path, message }`. Never throws. */
268
+ export function validateNeonConfig(config) {
269
+ const errors = [];
270
+ if (!isObj(config))
271
+ return [{ path: '', message: 'The config must be an object.' }];
272
+ for (const c of NEON_CONTROLS) {
273
+ const v = getPath(config, c.path);
274
+ const where = c.path;
275
+ if (c.type === 'text') {
276
+ if (typeof v !== 'string')
277
+ errors.push({ path: where, message: 'Must be text.' });
278
+ else if (c.path === 'text' && v.length > MAX_NEON_TEXT_LENGTH)
279
+ errors.push({ path: where, message: `At most ${MAX_NEON_TEXT_LENGTH} characters.` });
280
+ else if (c.path !== 'text' && !v.trim())
281
+ errors.push({ path: where, message: 'Must not be empty.' });
282
+ }
283
+ else if (c.type === 'number') {
284
+ if (typeof v !== 'number' || !Number.isFinite(v))
285
+ errors.push({ path: where, message: 'Must be a number.' });
286
+ else if ((c.min !== undefined && v < c.min) || (c.max !== undefined && v > c.max))
287
+ errors.push({ path: where, message: `Must be between ${c.min} and ${c.max}.` });
288
+ }
289
+ else if (c.type === 'boolean') {
290
+ if (typeof v !== 'boolean')
291
+ errors.push({ path: where, message: 'Must be true or false.' });
292
+ }
293
+ else if (c.type === 'enum') {
294
+ if (!c.options.includes(v))
295
+ errors.push({ path: where, message: `Must be one of: ${c.options.join(', ')}.` });
296
+ }
297
+ else if (c.type === 'color') {
298
+ if (!isHexColor(v))
299
+ errors.push({ path: where, message: 'Must be a hex colour like #FF3B4D.' });
300
+ }
301
+ else if (v !== null && !isHexColor(v)) {
302
+ errors.push({ path: where, message: 'Must be a hex colour like #FF3B4D, or null.' });
303
+ }
304
+ }
305
+ return errors;
306
+ }
307
+ /**
308
+ * **A config that can always be drawn.** Every field that fails validation is replaced by its
309
+ * default, and the problems are returned alongside, so a renderer never crashes and never half-draws.
310
+ */
311
+ export function sanitizeNeonConfig(config) {
312
+ const base = isObj(config) ? merge(DEFAULT_NEON_CONFIG, config) : DEFAULT_NEON_CONFIG;
313
+ const errors = validateNeonConfig(base);
314
+ let out = base;
315
+ for (const e of errors)
316
+ out = e.path ? setPath(out, e.path, getPath(DEFAULT_NEON_CONFIG, e.path)) : DEFAULT_NEON_CONFIG;
317
+ return { config: out, errors: isObj(config) ? errors : [{ path: '', message: 'The config must be an object.' }] };
318
+ }
319
+ //# sourceMappingURL=config.js.map