framefields 2.5.5 → 2.6.0

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 (292) hide show
  1. package/README.md +11 -0
  2. package/dist/audio/index.mjs +10 -10
  3. package/dist/{audio-C9euVW4K.mjs → audio-QBA2VogL.mjs} +3 -3
  4. package/dist/{audio-C9euVW4K.mjs.map → audio-QBA2VogL.mjs.map} +1 -1
  5. package/dist/cli.mjs +866 -16
  6. package/dist/cli.mjs.map +1 -1
  7. package/dist/components/index.d.mts +2 -2
  8. package/dist/components/index.mjs +43 -43
  9. package/dist/{dist-BuirkW-f.mjs → dist-CDwWQYg3.mjs} +2 -2
  10. package/dist/dist-CDwWQYg3.mjs.map +1 -0
  11. package/dist/{dist-DBdxM6xv.mjs → dist-nHCqVk-e.mjs} +3 -3
  12. package/dist/dist-nHCqVk-e.mjs.map +1 -0
  13. package/dist/effects/index.mjs +34 -34
  14. package/dist/{effects-B263lgUi.mjs → effects-C-6I4iYW.mjs} +2 -2
  15. package/dist/{effects-B263lgUi.mjs.map → effects-C-6I4iYW.mjs.map} +1 -1
  16. package/dist/fonts/index.d.mts +1 -1
  17. package/dist/fonts/index.mjs +2 -2
  18. package/dist/{fonts-DNx6ps2p.mjs → fonts-BieW3VWV.mjs} +7 -3
  19. package/dist/fonts-BieW3VWV.mjs.map +1 -0
  20. package/dist/{gpu-BRBIoxMC.mjs → gpu-Bb4WmYYH.mjs} +2 -2
  21. package/dist/{gpu-BRBIoxMC.mjs.map → gpu-Bb4WmYYH.mjs.map} +1 -1
  22. package/dist/index-D-Gnyffj.d.mts.map +1 -1
  23. package/dist/{index-N1tMc5Z9.d.mts → index-E1IrPAm4.d.mts} +629 -203
  24. package/dist/index-E1IrPAm4.d.mts.map +1 -0
  25. package/dist/{index-CalU-mpZ.d.mts → index-j5LGVVbm.d.mts} +3 -1
  26. package/dist/index-j5LGVVbm.d.mts.map +1 -0
  27. package/dist/index.d.mts +3 -3
  28. package/dist/index.mjs +50 -50
  29. package/dist/preview/index.mjs +10 -10
  30. package/dist/{preview-ChR8Z8Fm.mjs → preview-D6jS38Di.mjs} +2 -2
  31. package/dist/{preview-ChR8Z8Fm.mjs.map → preview-D6jS38Di.mjs.map} +1 -1
  32. package/dist/preview-engine/{chunk-ZJLNXN7W.mjs → chunk-AYTP6OGO.mjs} +6 -6
  33. package/dist/preview-engine/chunk-MLAIEIUF.mjs +1974 -0
  34. package/dist/preview-engine/chunk-W3I7LKDV.mjs +5 -0
  35. package/dist/preview-engine/chunk-ZMMNN77R.mjs +3 -0
  36. package/dist/preview-engine/components.mjs +1 -1
  37. package/dist/preview-engine/fonts.mjs +1 -1
  38. package/dist/preview-engine/framefields.mjs +1 -1
  39. package/dist/preview-engine/player.mjs +1 -1
  40. package/dist/preview-engine/{renderers-WZEV464O.mjs → renderers-4G3UOPA7.mjs} +1 -1
  41. package/dist/{program-O2bWX0cs.mjs → program-Bf4yHbHC.mjs} +19 -3
  42. package/dist/program-Bf4yHbHC.mjs.map +1 -0
  43. package/dist/registry/annotate.json +1 -1
  44. package/dist/registry/app-frame.json +1 -1
  45. package/dist/registry/backdrop.json +3 -3
  46. package/dist/registry/before-after.json +1 -1
  47. package/dist/registry/callout.json +1 -1
  48. package/dist/registry/captions.json +7 -1
  49. package/dist/registry/card-stack.json +3 -3
  50. package/dist/registry/chat-thread.json +7 -1
  51. package/dist/registry/code-block.json +8 -2
  52. package/dist/registry/confetti.json +1 -1
  53. package/dist/registry/device-frame.json +2 -1
  54. package/dist/registry/focus-zoom.json +1 -1
  55. package/dist/registry/logo-reveal.json +1 -1
  56. package/dist/registry/lower-third.json +1 -1
  57. package/dist/registry/meter.json +1 -1
  58. package/dist/registry/mouse-pointer.json +1 -1
  59. package/dist/registry/selection.json +3 -3
  60. package/dist/registry/spotlight.json +1 -1
  61. package/dist/registry/terminal.json +7 -1
  62. package/dist/registry/text-reveal.json +2 -1
  63. package/dist/registry/title-card.json +1 -1
  64. package/dist/registry/toasts.json +1 -1
  65. package/dist/registry/touch-point.json +4 -4
  66. package/dist/registry/waveform.json +3 -3
  67. package/dist/registry/word-cycle.json +2 -2
  68. package/dist/renderer/index.mjs +2 -2
  69. package/dist/renderer-4FQmduPw.mjs +5 -0
  70. package/dist/{renderer-DW21AyEv.mjs → renderer-4v6XYAiX.mjs} +3 -3
  71. package/dist/{renderer-DW21AyEv.mjs.map → renderer-4v6XYAiX.mjs.map} +1 -1
  72. package/dist/{renderer-YFHESw3v.mjs → renderer-79mO0b9Y.mjs} +3 -3
  73. package/dist/{renderer-YFHESw3v.mjs.map → renderer-79mO0b9Y.mjs.map} +1 -1
  74. package/dist/{renderer-DtqiWq1m.mjs → renderer-AOZWHGT3.mjs} +3 -3
  75. package/dist/{renderer-DtqiWq1m.mjs.map → renderer-AOZWHGT3.mjs.map} +1 -1
  76. package/dist/{renderer-Dw3K8KT9.mjs → renderer-B1Ox12RF.mjs} +2 -2
  77. package/dist/{renderer-Dw3K8KT9.mjs.map → renderer-B1Ox12RF.mjs.map} +1 -1
  78. package/dist/{renderer-DkM6Ikdf.mjs → renderer-B6vr-B0t.mjs} +3 -3
  79. package/dist/{renderer-DkM6Ikdf.mjs.map → renderer-B6vr-B0t.mjs.map} +1 -1
  80. package/dist/renderer-BBCpRuYU.mjs +5 -0
  81. package/dist/renderer-BBTo_jLO.mjs +5 -0
  82. package/dist/{renderer-CpDaUeCN.mjs → renderer-BDCS7k5X.mjs} +3 -3
  83. package/dist/{renderer-CpDaUeCN.mjs.map → renderer-BDCS7k5X.mjs.map} +1 -1
  84. package/dist/{renderer-DO1TeUqV.mjs → renderer-BFdgbqgW.mjs} +3 -3
  85. package/dist/{renderer-DO1TeUqV.mjs.map → renderer-BFdgbqgW.mjs.map} +1 -1
  86. package/dist/{renderer-CEAmByVW.mjs → renderer-BHgYRSu8.mjs} +2 -2
  87. package/dist/{renderer-CEAmByVW.mjs.map → renderer-BHgYRSu8.mjs.map} +1 -1
  88. package/dist/{renderer-CA_CwisV.mjs → renderer-BKssznKn.mjs} +2 -2
  89. package/dist/{renderer-CA_CwisV.mjs.map → renderer-BKssznKn.mjs.map} +1 -1
  90. package/dist/{renderer-DWG6EXGj.mjs → renderer-BL9vkn6m.mjs} +3 -3
  91. package/dist/{renderer-DWG6EXGj.mjs.map → renderer-BL9vkn6m.mjs.map} +1 -1
  92. package/dist/renderer-BLg66ZgG.mjs +5 -0
  93. package/dist/{renderer-RbMM6Njv.mjs → renderer-BQFxoNzi.mjs} +3 -3
  94. package/dist/{renderer-RbMM6Njv.mjs.map → renderer-BQFxoNzi.mjs.map} +1 -1
  95. package/dist/{renderer-x1xlZaH_.mjs → renderer-BQdn_qGp.mjs} +3 -3
  96. package/dist/{renderer-x1xlZaH_.mjs.map → renderer-BQdn_qGp.mjs.map} +1 -1
  97. package/dist/{renderer-DkOxEQsg.mjs → renderer-BR35Xp9n.mjs} +3 -3
  98. package/dist/{renderer-DkOxEQsg.mjs.map → renderer-BR35Xp9n.mjs.map} +1 -1
  99. package/dist/renderer-BScS8AzG.mjs +5 -0
  100. package/dist/{renderer-C2MaJKfY.mjs → renderer-BTjveb1Y.mjs} +3 -3
  101. package/dist/{renderer-C2MaJKfY.mjs.map → renderer-BTjveb1Y.mjs.map} +1 -1
  102. package/dist/renderer-Bb1cS5mJ.mjs +5 -0
  103. package/dist/{renderer-Dwh0jaor.mjs → renderer-Bbkf5EIi.mjs} +3 -3
  104. package/dist/{renderer-Dwh0jaor.mjs.map → renderer-Bbkf5EIi.mjs.map} +1 -1
  105. package/dist/{renderer-DsnV8tpW.mjs → renderer-BmgyvIC3.mjs} +3 -3
  106. package/dist/{renderer-DsnV8tpW.mjs.map → renderer-BmgyvIC3.mjs.map} +1 -1
  107. package/dist/{renderer-BfQdc3RM.mjs → renderer-Bpve7M6S.mjs} +69 -69
  108. package/dist/{renderer-BfQdc3RM.mjs.map → renderer-Bpve7M6S.mjs.map} +1 -1
  109. package/dist/renderer-Bpwd9zEY.mjs +5 -0
  110. package/dist/{renderer-C5QYI1Wu.mjs → renderer-BsnhAgrB.mjs} +2 -2
  111. package/dist/{renderer-C5QYI1Wu.mjs.map → renderer-BsnhAgrB.mjs.map} +1 -1
  112. package/dist/{renderer-BlU3Sh_0.mjs → renderer-By5xTRqB.mjs} +3 -3
  113. package/dist/{renderer-BlU3Sh_0.mjs.map → renderer-By5xTRqB.mjs.map} +1 -1
  114. package/dist/{renderer-D8m3fuRp.mjs → renderer-BzEQXAdl.mjs} +2 -2
  115. package/dist/{renderer-D8m3fuRp.mjs.map → renderer-BzEQXAdl.mjs.map} +1 -1
  116. package/dist/renderer-Bzyd9xi5.mjs +5 -0
  117. package/dist/{renderer-1NoJLLDa.mjs → renderer-C64g87yU.mjs} +3 -3
  118. package/dist/{renderer-1NoJLLDa.mjs.map → renderer-C64g87yU.mjs.map} +1 -1
  119. package/dist/{renderer-Daqvhwjp.mjs → renderer-C6Wb1TZT.mjs} +3 -3
  120. package/dist/{renderer-Daqvhwjp.mjs.map → renderer-C6Wb1TZT.mjs.map} +1 -1
  121. package/dist/{renderer-BWNQQZ12.mjs → renderer-CHPLHbAs.mjs} +3 -3
  122. package/dist/{renderer-BWNQQZ12.mjs.map → renderer-CHPLHbAs.mjs.map} +1 -1
  123. package/dist/{renderer-B5ZdkcMi.mjs → renderer-CJRu7lLH.mjs} +2 -2
  124. package/dist/{renderer-B5ZdkcMi.mjs.map → renderer-CJRu7lLH.mjs.map} +1 -1
  125. package/dist/{renderer-Bvizxddu.mjs → renderer-CMWUtfwn.mjs} +2 -2
  126. package/dist/{renderer-Bvizxddu.mjs.map → renderer-CMWUtfwn.mjs.map} +1 -1
  127. package/dist/{renderer-C3tdjg8B.mjs → renderer-CRkgyk08.mjs} +3 -3
  128. package/dist/{renderer-C3tdjg8B.mjs.map → renderer-CRkgyk08.mjs.map} +1 -1
  129. package/dist/renderer-CXVssx1k.mjs +5 -0
  130. package/dist/{renderer-DcApNxER.mjs → renderer-CY0BT6ok.mjs} +2 -2
  131. package/dist/{renderer-DcApNxER.mjs.map → renderer-CY0BT6ok.mjs.map} +1 -1
  132. package/dist/renderer-CYFiGLls.mjs +5 -0
  133. package/dist/{renderer-PhjHSS97.mjs → renderer-CYLP8sD6.mjs} +2 -2
  134. package/dist/{renderer-PhjHSS97.mjs.map → renderer-CYLP8sD6.mjs.map} +1 -1
  135. package/dist/{renderer-C6n8y6Pw.mjs → renderer-CY_1u6zi.mjs} +3 -3
  136. package/dist/{renderer-C6n8y6Pw.mjs.map → renderer-CY_1u6zi.mjs.map} +1 -1
  137. package/dist/renderer-C__BvvtP.mjs +5 -0
  138. package/dist/renderer-Ca3YZsoT.mjs +5 -0
  139. package/dist/{renderer-DADTT3ym.mjs → renderer-CcSBjtRa.mjs} +2 -2
  140. package/dist/{renderer-CnclEQdA.mjs → renderer-CgdplRri.mjs} +2 -2
  141. package/dist/{renderer-CnclEQdA.mjs.map → renderer-CgdplRri.mjs.map} +1 -1
  142. package/dist/{renderer-oR1LvHeO.mjs → renderer-Cn9tU_s5.mjs} +2 -2
  143. package/dist/{renderer-oR1LvHeO.mjs.map → renderer-Cn9tU_s5.mjs.map} +1 -1
  144. package/dist/renderer-CnM5iFj9.mjs +5 -0
  145. package/dist/{renderer-DHdFVpdH.mjs → renderer-Cqp_TUl_.mjs} +2 -2
  146. package/dist/{renderer-DHdFVpdH.mjs.map → renderer-Cqp_TUl_.mjs.map} +1 -1
  147. package/dist/{renderer-C8pJFxcL.mjs → renderer-CsOLHKFx.mjs} +2 -2
  148. package/dist/{renderer-C8pJFxcL.mjs.map → renderer-CsOLHKFx.mjs.map} +1 -1
  149. package/dist/{renderer-R5Lg65F8.mjs → renderer-D01RT3Ov.mjs} +2 -2
  150. package/dist/renderer-D1nZrvQx.mjs +5 -0
  151. package/dist/renderer-D6XjVQME.mjs +5 -0
  152. package/dist/{renderer-QQDU1b0Z.mjs → renderer-DAONCf_3.mjs} +3 -3
  153. package/dist/{renderer-QQDU1b0Z.mjs.map → renderer-DAONCf_3.mjs.map} +1 -1
  154. package/dist/{renderer-DTPmvL1i.mjs → renderer-DAfWLGfy.mjs} +3 -3
  155. package/dist/{renderer-DTPmvL1i.mjs.map → renderer-DAfWLGfy.mjs.map} +1 -1
  156. package/dist/{renderer-BvA4sQz5.mjs → renderer-DEeKkljI.mjs} +3 -3
  157. package/dist/{renderer-BvA4sQz5.mjs.map → renderer-DEeKkljI.mjs.map} +1 -1
  158. package/dist/{renderer-YBwN9uyj.mjs → renderer-DFYXjAIT.mjs} +5 -5
  159. package/dist/{renderer-YBwN9uyj.mjs.map → renderer-DFYXjAIT.mjs.map} +1 -1
  160. package/dist/renderer-DIuMnMF0.mjs +5 -0
  161. package/dist/{renderer-Dz4muMyE.mjs → renderer-DJHuPNJx.mjs} +2 -2
  162. package/dist/{renderer-Dz4muMyE.mjs.map → renderer-DJHuPNJx.mjs.map} +1 -1
  163. package/dist/{renderer-H4-8sBjl.mjs → renderer-DJTXhVNh.mjs} +2 -2
  164. package/dist/{renderer-H4-8sBjl.mjs.map → renderer-DJTXhVNh.mjs.map} +1 -1
  165. package/dist/{renderer-BMiZIGkZ.mjs → renderer-DNEFYrQ5.mjs} +2 -2
  166. package/dist/renderer-DUvvM8EF.mjs +5 -0
  167. package/dist/renderer-DWogyuMO.mjs +5 -0
  168. package/dist/renderer-DWsj_LJR.mjs +5 -0
  169. package/dist/{renderer-DGOY-LBR.mjs → renderer-DYJHFHF4.mjs} +2 -2
  170. package/dist/{renderer-DGOY-LBR.mjs.map → renderer-DYJHFHF4.mjs.map} +1 -1
  171. package/dist/{renderer-CVbNiH03.mjs → renderer-DYR4gFEM.mjs} +3 -3
  172. package/dist/{renderer-CVbNiH03.mjs.map → renderer-DYR4gFEM.mjs.map} +1 -1
  173. package/dist/renderer-DYun0DJl.mjs +5 -0
  174. package/dist/renderer-D_6YqD-Z.mjs +5 -0
  175. package/dist/{renderer-B0IJirDs.mjs → renderer-D_UPFbei.mjs} +3 -3
  176. package/dist/{renderer-B0IJirDs.mjs.map → renderer-D_UPFbei.mjs.map} +1 -1
  177. package/dist/renderer-Db9LP86x.mjs +5 -0
  178. package/dist/{renderer-CFRTJ7cT.mjs → renderer-DgRJG_l-.mjs} +2 -2
  179. package/dist/{renderer-CFRTJ7cT.mjs.map → renderer-DgRJG_l-.mjs.map} +1 -1
  180. package/dist/renderer-DhHiC87m.mjs +5 -0
  181. package/dist/{renderer-BZ5uOfoX.mjs → renderer-DiD3r9tx.mjs} +2 -2
  182. package/dist/{renderer-BZ5uOfoX.mjs.map → renderer-DiD3r9tx.mjs.map} +1 -1
  183. package/dist/{renderer-B2no_9zi.mjs → renderer-Dj-y-BtT.mjs} +3 -3
  184. package/dist/{renderer-B2no_9zi.mjs.map → renderer-Dj-y-BtT.mjs.map} +1 -1
  185. package/dist/renderer-Dj5jGAkR.mjs +5 -0
  186. package/dist/{renderer-Bs6BaMLf.mjs → renderer-DlA7kzIs.mjs} +3 -3
  187. package/dist/{renderer-Bs6BaMLf.mjs.map → renderer-DlA7kzIs.mjs.map} +1 -1
  188. package/dist/renderer-DlPUQ7RF.mjs +5 -0
  189. package/dist/renderer-DpIPdgn8.mjs +5 -0
  190. package/dist/renderer-Dv0C9CEt.mjs +6 -0
  191. package/dist/{renderer-CFCR_7bq.mjs → renderer-EwSSuJXj.mjs} +3 -3
  192. package/dist/{renderer-CFCR_7bq.mjs.map → renderer-EwSSuJXj.mjs.map} +1 -1
  193. package/dist/renderer-Iw8fDL-p.mjs +5 -0
  194. package/dist/{renderer-tcS585Iy.mjs → renderer-JJibsJfb.mjs} +2 -2
  195. package/dist/{renderer-tcS585Iy.mjs.map → renderer-JJibsJfb.mjs.map} +1 -1
  196. package/dist/{renderer-CTy0bSsl.mjs → renderer-KppAWfmJ.mjs} +3 -3
  197. package/dist/{renderer-CTy0bSsl.mjs.map → renderer-KppAWfmJ.mjs.map} +1 -1
  198. package/dist/{renderer-CPSg6eEQ.mjs → renderer-LW8MfGjd.mjs} +2 -2
  199. package/dist/{renderer-CPSg6eEQ.mjs.map → renderer-LW8MfGjd.mjs.map} +1 -1
  200. package/dist/{renderer-Cg2xS8h8.mjs → renderer-PMjV8x65.mjs} +2 -2
  201. package/dist/{renderer-Cg2xS8h8.mjs.map → renderer-PMjV8x65.mjs.map} +1 -1
  202. package/dist/renderer-SLI69Mju.mjs +5 -0
  203. package/dist/{renderer-DdkPY4hO.mjs → renderer-UArFa4y9.mjs} +2 -2
  204. package/dist/{renderer-DdkPY4hO.mjs.map → renderer-UArFa4y9.mjs.map} +1 -1
  205. package/dist/{renderer-B7vXnBUo.mjs → renderer-VwKmjuc6.mjs} +3 -3
  206. package/dist/{renderer-B7vXnBUo.mjs.map → renderer-VwKmjuc6.mjs.map} +1 -1
  207. package/dist/renderer-ZVtbb3-P.mjs +5 -0
  208. package/dist/{renderer-Dk0okoS3.mjs → renderer-bb3puodg.mjs} +2 -2
  209. package/dist/{renderer-Dk0okoS3.mjs.map → renderer-bb3puodg.mjs.map} +1 -1
  210. package/dist/{renderer-DVGVcDvB.mjs → renderer-eyvY4Lq4.mjs} +3 -3
  211. package/dist/{renderer-DVGVcDvB.mjs.map → renderer-eyvY4Lq4.mjs.map} +1 -1
  212. package/dist/renderer-gHNCu7H5.mjs +5 -0
  213. package/dist/renderer-gxDNmbtU.mjs +5 -0
  214. package/dist/renderer-hkK4DNRX.mjs +5 -0
  215. package/dist/{renderer-CrKYlipx.mjs → renderer-ij448rvt.mjs} +2 -2
  216. package/dist/{renderer-CrKYlipx.mjs.map → renderer-ij448rvt.mjs.map} +1 -1
  217. package/dist/{renderer-BrKgtYq4.mjs → renderer-j7aUfyeR.mjs} +3 -3
  218. package/dist/{renderer-BrKgtYq4.mjs.map → renderer-j7aUfyeR.mjs.map} +1 -1
  219. package/dist/{renderer-8_d6YNnE.mjs → renderer-kOlfYLtu.mjs} +2 -2
  220. package/dist/{renderer-8_d6YNnE.mjs.map → renderer-kOlfYLtu.mjs.map} +1 -1
  221. package/dist/{renderer-D3FJcRA3.mjs → renderer-l1qJE4z-.mjs} +2 -2
  222. package/dist/{renderer-D3FJcRA3.mjs.map → renderer-l1qJE4z-.mjs.map} +1 -1
  223. package/dist/{renderer-BKJ8cywK.mjs → renderer-ml2LHmRb.mjs} +2 -2
  224. package/dist/{renderer-BKJ8cywK.mjs.map → renderer-ml2LHmRb.mjs.map} +1 -1
  225. package/dist/{renderer-DmTxEeMh.mjs → renderer-mu2mYo5w.mjs} +3 -3
  226. package/dist/{renderer-DmTxEeMh.mjs.map → renderer-mu2mYo5w.mjs.map} +1 -1
  227. package/dist/{renderer-Bwxm-kWL.mjs → renderer-ovkctV5a.mjs} +2 -2
  228. package/dist/renderer-oy6SGDRz.mjs +5 -0
  229. package/dist/{renderer-CqJou_2L.mjs → renderer-qQmoO5Hk.mjs} +2 -2
  230. package/dist/{renderer-CqJou_2L.mjs.map → renderer-qQmoO5Hk.mjs.map} +1 -1
  231. package/dist/renderer-rq7UIcuH.mjs +5 -0
  232. package/dist/{renderer-BStETpqC.mjs → renderer-rv-AKqCl.mjs} +2 -2
  233. package/dist/{renderer-BStETpqC.mjs.map → renderer-rv-AKqCl.mjs.map} +1 -1
  234. package/dist/renderer-xkEJahws.mjs +5 -0
  235. package/dist/{renderer-BNs31kME.mjs → renderer-yF40Pb-n.mjs} +3 -3
  236. package/dist/{renderer-BNs31kME.mjs.map → renderer-yF40Pb-n.mjs.map} +1 -1
  237. package/dist/{renderer-Bag1LFos.mjs → renderer-yFHP9Zj2.mjs} +3 -3
  238. package/dist/{renderer-Bag1LFos.mjs.map → renderer-yFHP9Zj2.mjs.map} +1 -1
  239. package/dist/{renderer-CbxfSmYE.mjs → renderer-zOK5DYYn.mjs} +3 -3
  240. package/dist/{renderer-CbxfSmYE.mjs.map → renderer-zOK5DYYn.mjs.map} +1 -1
  241. package/dist/{renderers-CP8CFWDs-EZZPEbhW.mjs → renderers-CP8CFWDs-DPLX5EJs.mjs} +2 -2
  242. package/dist/{renderers-CP8CFWDs-EZZPEbhW.mjs.map → renderers-CP8CFWDs-DPLX5EJs.mjs.map} +1 -1
  243. package/dist/signals/index.mjs +4 -4
  244. package/dist/{src-r7Suenhp.mjs → src-BnkrNj2W.mjs} +612 -117
  245. package/dist/src-BnkrNj2W.mjs.map +1 -0
  246. package/package.json +59 -58
  247. package/dist/dist-BuirkW-f.mjs.map +0 -1
  248. package/dist/dist-DBdxM6xv.mjs.map +0 -1
  249. package/dist/fonts-DNx6ps2p.mjs.map +0 -1
  250. package/dist/index-CalU-mpZ.d.mts.map +0 -1
  251. package/dist/index-N1tMc5Z9.d.mts.map +0 -1
  252. package/dist/preview-engine/chunk-2TCJSHFA.mjs +0 -1974
  253. package/dist/preview-engine/chunk-Q7XC3FI7.mjs +0 -3
  254. package/dist/preview-engine/chunk-ZZAZF6VC.mjs +0 -5
  255. package/dist/program-O2bWX0cs.mjs.map +0 -1
  256. package/dist/renderer-0441BN0U.mjs +0 -5
  257. package/dist/renderer-3qDgFc-W.mjs +0 -5
  258. package/dist/renderer-6AIqTN5Z.mjs +0 -5
  259. package/dist/renderer-B7MZ5R7u.mjs +0 -5
  260. package/dist/renderer-BE2rIA4B.mjs +0 -5
  261. package/dist/renderer-BIQ81ln4.mjs +0 -5
  262. package/dist/renderer-BKm3_Ob3.mjs +0 -5
  263. package/dist/renderer-BNdT1Wwf.mjs +0 -5
  264. package/dist/renderer-BQycs1q_.mjs +0 -5
  265. package/dist/renderer-Bj7MxXfk.mjs +0 -5
  266. package/dist/renderer-BjRAGYYC.mjs +0 -5
  267. package/dist/renderer-BqE2BQ_X.mjs +0 -5
  268. package/dist/renderer-Bz5BMkOE.mjs +0 -5
  269. package/dist/renderer-CDOSfB9H.mjs +0 -5
  270. package/dist/renderer-CT26yQT-.mjs +0 -5
  271. package/dist/renderer-CZeAbz48.mjs +0 -5
  272. package/dist/renderer-D50b7kip.mjs +0 -5
  273. package/dist/renderer-D5LmrO96.mjs +0 -5
  274. package/dist/renderer-DCvqZ5o_.mjs +0 -5
  275. package/dist/renderer-DJGJeGEn.mjs +0 -5
  276. package/dist/renderer-DONvNNXi.mjs +0 -5
  277. package/dist/renderer-DPaSo--Y.mjs +0 -6
  278. package/dist/renderer-DfYYokhr.mjs +0 -5
  279. package/dist/renderer-DlIJhdEM.mjs +0 -5
  280. package/dist/renderer-DqD3nMtv.mjs +0 -5
  281. package/dist/renderer-DrIl-uGt.mjs +0 -5
  282. package/dist/renderer-DyCB3Q1d.mjs +0 -5
  283. package/dist/renderer-DyJ-iSv6.mjs +0 -5
  284. package/dist/renderer-Dzs0jV0G.mjs +0 -5
  285. package/dist/renderer-HIKXw5-Y.mjs +0 -5
  286. package/dist/renderer-Jgt2g8Wp.mjs +0 -5
  287. package/dist/renderer-KnZWmT-M.mjs +0 -5
  288. package/dist/renderer-OMSXddG9.mjs +0 -5
  289. package/dist/renderer-P78xh6OV.mjs +0 -5
  290. package/dist/renderer-gaFP1Kak.mjs +0 -5
  291. package/dist/renderer-lQ8gH7Zd.mjs +0 -5
  292. package/dist/src-r7Suenhp.mjs.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import { $i as MediaSourceInput, A as SlugFontCache, Ba as Signal, Ei as FrameContext, Et as KineticMarqueeConfig, Ia as RenderDiagnostic, M as SphereGeometryOptions, Ma as ProgrammaticSignal, No as VisionTask, Oi as FrameSignal, Y as AETextAnimator, Z as AdvancedTextAnimator, ba as NormalRelightingOptions, ci as DeflickerOptions, fi as Effect$1, fo as TextSpan, hi as EffectDomain, ii as DataType, in as TextPathOptions, ko as VirtualMediaData, qi as MediaMetadata, ta as MeshAudioDeformConfig, u as CylinderGeometryOptions, vn as TypewriterAnimator, w as RoundedBoxGeometryOptions } from "./index-ocZc12ZS.mjs";
2
- import { i as RegisterFontOptions } from "./index-CalU-mpZ.mjs";
2
+ import { i as RegisterFontOptions } from "./index-j5LGVVbm.mjs";
3
3
  import { $n as ResizerScalerProps, $t as FlipProps, An as Paint, At as CameraParallax3DProps, B as PBRGlass, Bn as Pixelate, Bt as ContourProps, C as GradientMapProps, Cn as MeshWarp, Ct as AudioParametricEq, D as HalftoneScreen, Dn as NoiseGeneratorProps, Dt as CRT, Ei as TensorPipeline, En as NoiseGenerator, Et as AudioReverbProps, F as LevelsProps, Fn as Painterly, Ft as ColorBalance, G as SSAOProps, Gn as ProceduralVFXProps, Gt as DatamoshProps, H as Relight3D, Hn as Posterize, I as Modulate, In as PainterlyProps, It as ColorBalanceProps, J as SelectiveColorProps, Jn as RefineEdge, Jr as ClipSubjectSource, Jt as Dither, K as SelectiveColor, Kn as RGBSplit, Kr as COCO17_KEYPOINT_NAMES, Kt as DisplacementMap, L as ModulateProps, Ln as PatchHeal, Lt as ColorKey, M as HighPassProps, Mt as ChannelMergerProps, Nt as ChannelSplitter, O as HalftoneScreenProps, On as OpArt, Ot as CRTProps, P as Levels, Pt as ChannelSplitterProps, Q as TileOffset, Qn as ResizerScaler, Qt as Flip, R as MotionBlur, Rt as ColorKeyProps, S as GradientMap, Sn as MaskMathProps, St as AudioNoiseGateProps, Tn as MeshWarpProps, Tt as AudioReverb, U as Relight3DProps, Un as PosterizeProps, Ut as CornerPinProps, V as PBRGlassProps, Vn as PixelateProps, Vt as CornerPin, W as SSAO, Wn as ProceduralVFX, Wt as Datamosh, X as ShadowsHighlightsProps, Xn as RefractionCaustics3D, Xr as LandmarkCoordinateSignals, Xt as ExtractLUT, Y as ShadowsHighlights, Yn as RefineEdgeProps, Yr as InstanceMask, Yt as DitherProps, Z as TemporalDeflicker, Zn as RefractionCaustics3DProps, Zr as MaskTrackSignals, Zt as ExtractLUTProps, _t as AudioDelay, a as ApplyLUTProps, ai as PinToLandmarkOptions, an as KaleidoscopeProps, ar as Toon, b as FilmGrain, bn as LiquifyProps, bt as AudioFadeProps, c as Crop, cn as KenBurnsProps, cr as TrailsProps, dr as EffectProp, dt as Blur, en as Gooey, er as Rotate, et as TileOffsetProps, f as CurvesProps, ft as BlurProps, g as DepthOfFieldProps, gi as VisionNode, gn as LayerStyleProps, gt as AudioCompressorProps, h as DepthOfField, hi as VisionBundle, ht as AudioCompressor, i as ApplyLUT, in as Kaleidoscope, it as VisionProps, j as HighPass, jn as PaintProps, jt as ChannelMerger, kn as OpArtProps, kt as CameraParallax3D, l as CropProps, ln as LayerStyle, lr as Vignette, m as DeflickerProps, mi as VisionAnalysisReport, mt as AsciiProps, n as AnyEffect, nn as Iridescence, nr as StereoPanning, nt as UnsharpMaskProps, oi as PinToObjectOptions, on as KenBurns, or as ToonProps, p as CustomEffect, pt as Ascii, qn as RGBSplitProps, qt as DisplacementMapProps, r as AnyVisualEffect, ri as ObjectTrackSignals, rn as IridescenceProps, rr as StereoPanningProps, rt as Vision, sr as Trails, t as AnyAudioEffect, tn as GooeyProps, tr as RotateProps, tt as UnsharpMask, u as Curves, ur as VignetteProps, vn as Liquify, vt as AudioDelayProps, wt as AudioParametricEqProps, x as FilmGrainProps, xn as MaskMath, xt as AudioNoiseGate, yt as AudioFade, z as MotionBlurProps, zn as PatchHealProps, zt as Contour } from "./index-D-Gnyffj.mjs";
4
4
  import { c as HeadlessMediaRenderer, f as RenderProgress, m as VideoQaReport, p as VideoQaOptions, t as FrameGridOptions } from "./index-BhzlG_1Q.mjs";
5
5
  import { z, z as z$2 } from "zod";
@@ -1653,9 +1653,17 @@ declare function evaluateAnimationAtFrame(animation: LayerAnimationSpec | undefi
1653
1653
  * any count, but programs this size are slow to send, read and edit.
1654
1654
  */
1655
1655
 
1656
+ interface LintOptions {
1657
+ /**
1658
+ * Whether a color emoji font is registered (framefields'
1659
+ * `FontManager.hasEmojiFont()`). When false, text with emoji is flagged:
1660
+ * the emoji would draw nothing. Unknown (omitted): not checked.
1661
+ */
1662
+ emojiFont?: boolean;
1663
+ }
1656
1664
  declare function lintComposition(config: Pick<CompositorProgramConfig, "width" | "height" | "layout"> & {
1657
1665
  backgroundColor?: string;
1658
- }): RenderDiagnostic[];
1666
+ }, options?: LintOptions): RenderDiagnostic[];
1659
1667
  //#endregion
1660
1668
  //#region src/program/mattes.d.ts
1661
1669
  /** Returns the tree with every `matte` turned into a sibling matte layer. */
@@ -1710,12 +1718,12 @@ type CarrierHandoffConfig = z.infer<typeof CarrierHandoffConfigSchema>;
1710
1718
  declare const SceneDefinitionSchema: z.ZodObject<{
1711
1719
  id: z.ZodString;
1712
1720
  chapter: z.ZodDefault<z.ZodEnum<{
1721
+ custom: "custom";
1713
1722
  hook: "hook";
1714
1723
  tension: "tension";
1715
1724
  solution: "solution";
1716
1725
  feature_spotlight: "feature_spotlight";
1717
1726
  outro: "outro";
1718
- custom: "custom";
1719
1727
  }>>;
1720
1728
  durationMs: z.ZodOptional<z.ZodNumber>;
1721
1729
  durationFrames: z.ZodOptional<z.ZodNumber>;
@@ -1866,7 +1874,7 @@ declare function collectNodeOps(nodes: VirtualMediaData[]): VirtualMediaData[];
1866
1874
  //#endregion
1867
1875
  //#region src/program/validate.d.ts
1868
1876
  //#endregion
1869
- //#region ../components/dist/toolkit-D9dGhP-l.d.mts
1877
+ //#region ../components/dist/toolkit-HF1uj72e.d.mts
1870
1878
  //#region src/core/audio.d.ts
1871
1879
 
1872
1880
  /** A track's spectrum and loudness per frame, every value 0–1. */
@@ -1951,6 +1959,368 @@ declare function springSettleFrames(fps: number, options?: Parameters<typeof spr
1951
1959
  * keys (within `tolerance`, default 0.2 % of the distance).
1952
1960
  */
1953
1961
  declare function springKeys(start: number, from: number, to: number, fps: number, options?: Parameters<typeof springAt>[1], tolerance?: number): BakedKey[];
1962
+ /**
1963
+ * Per-frame values (frames 0…`length`) that spring to each new target from
1964
+ * wherever they are: a retarget mid-flight starts from the current value
1965
+ * (velocity isn't carried over). Bake with `bakeSamples` or bind as a signal.
1966
+ */
1967
+ declare function springTrack(changes: ReadonlyArray<readonly [frame: number, target: number]>, initial: number, length: number, fps: number, options?: {
1968
+ stiffness: number;
1969
+ damping: number;
1970
+ }): number[];
1971
+ //#endregion
1972
+ //#region src/core/color.d.ts
1973
+ /**
1974
+ * Color math for components: parse, fade, mix and judge lightness. Accepts
1975
+ * `#rgb`, `#rgba`, `#rrggbb`, `#rrggbbaa`, `rgb()` / `rgba()` (comma or
1976
+ * space syntax) and `white` / `black` / `transparent`. Anything else (a
1977
+ * gradient, `oklch()`, a CSS variable) passes through untouched where a
1978
+ * function returns a color, and counts as unknown where it returns a number.
1979
+ */
1980
+ /** Red, green, blue (0–255) and alpha (0–1). */
1981
+ type Rgba = [r: number, g: number, b: number, a: number];
1982
+ /** The color's channels, or null when the format isn't one listed above. */
1983
+ declare function parseColor(color: string): Rgba | null;
1984
+ /** `color` at `alpha` (replacing its own); unknown formats pass through. */
1985
+ declare function withAlpha(color: string, alpha: number): string;
1986
+ /**
1987
+ * `color` fully transparent, keeping its hue, so a gradient fading to it has
1988
+ * no dark fringe. Unknown formats give plain `rgba(0,0,0,0)`.
1989
+ */
1990
+ declare function transparent(color: string): string;
1991
+ /** Mix `a` toward `b` by `t` (0 → a, 1 → b): `#rrggbb` when both are opaque. */
1992
+ declare function mix(a: string, b: string, t: number): string;
1993
+ /** WCAG relative luminance (0 black … 1 white), or null for unknown formats. */
1994
+ declare function luminance(color: string): number | null;
1995
+ /** WCAG contrast ratio of two colors, or null when either is unknown. */
1996
+ declare function contrastRatio(a: string, b: string): number | null;
1997
+ /**
1998
+ * True when black text reads better than white on `color` (luminance above
1999
+ * ~0.18). Unknown formats count as dark.
2000
+ */
2001
+ declare function isLight(color: string): boolean;
2002
+ /** Whichever of `light` / `dark` ink reads better on `background`. */
2003
+ declare function inkOn(background: string, light?: string, dark?: string): string;
2004
+ //#endregion
2005
+ //#region src/core/theme.d.ts
2006
+ /** A spring, as `springKeys` / `springAt` take it. */
2007
+ interface Spring {
2008
+ stiffness: number;
2009
+ damping: number;
2010
+ }
2011
+ /**
2012
+ * How far a surface sits above what's behind it: a soft drop shadow, plus a
2013
+ * faint highlight along its top edge so it reads as a lit object.
2014
+ */
2015
+ interface Elevation {
2016
+ /** Shadow opacity, 0–1. */
2017
+ opacity: number;
2018
+ /** Shadow offset (straight down) and blur, px at theme scale 1. */
2019
+ distance: number;
2020
+ size: number;
2021
+ /** Opacity of the 1 px top-edge highlight, 0–1 (0: none). */
2022
+ edge: number;
2023
+ }
2024
+ interface Theme {
2025
+ /** Whether `bg` is dark or light; components pick shadows and chrome by it. */
2026
+ mode: "dark" | "light";
2027
+ color: {
2028
+ bg: string;
2029
+ surface: string;
2030
+ raised: string;
2031
+ line: string;
2032
+ ink: string;
2033
+ muted: string;
2034
+ accent: string;
2035
+ accent2: string;
2036
+ positive: string;
2037
+ negative: string;
2038
+ highlight: string;
2039
+ /** Shadow color (elevation). */
2040
+ shadow: string;
2041
+ };
2042
+ font: {
2043
+ display: string;
2044
+ body: string;
2045
+ mono: string;
2046
+ hand?: string;
2047
+ };
2048
+ /** Font weights by role, so one theme can swap a heavier or lighter family. */
2049
+ weight: {
2050
+ regular: number;
2051
+ medium: number;
2052
+ semibold: number;
2053
+ bold: number;
2054
+ heavy: number;
2055
+ };
2056
+ radius: {
2057
+ sm: number;
2058
+ md: number;
2059
+ lg: number;
2060
+ pill: number;
2061
+ };
2062
+ stroke: {
2063
+ hair: number;
2064
+ base: number;
2065
+ bold: number;
2066
+ };
2067
+ /** Surfaces: `low` (chips, tags), `mid` (cards, toasts), `high` (windows, modals). */
2068
+ elevation: {
2069
+ low: Elevation;
2070
+ mid: Elevation;
2071
+ high: Elevation;
2072
+ };
2073
+ motion: {
2074
+ ease: {
2075
+ enter: string;
2076
+ exit: string;
2077
+ move: string;
2078
+ snap: string;
2079
+ };
2080
+ /** Durations in frames at 30 fps; see {@link themeFrames}. */
2081
+ speed: {
2082
+ fast: number;
2083
+ base: number;
2084
+ slow: number;
2085
+ };
2086
+ /** `settle` lands without overshoot, `base` overshoots a little, `pop` bounces. */
2087
+ spring: {
2088
+ settle: Spring;
2089
+ base: Spring;
2090
+ pop: Spring;
2091
+ };
2092
+ };
2093
+ /** Code token colors (CodeBlock); unset kinds use the built-in palette. */
2094
+ syntax?: Partial<Record<SyntaxKind, string>>;
2095
+ /** 1 = designed for 1080p. 2 for 4K, 0.5 for 540p. */
2096
+ scale: number;
2097
+ }
2098
+ /** Token kinds CodeBlock colors. */
2099
+ type SyntaxKind = "plain" | "keyword" | "string" | "number" | "comment" | "function" | "type" | "property" | "punctuation" | "operator";
2100
+ type ThemeInput = DeepPartial<Theme>;
2101
+ type DeepPartial<T> = { [K in keyof T]?: T[K] extends object ? DeepPartial<T[K]> : T[K] };
2102
+ /** Built-in themes. Fonts are never bundled: register the families you use. */
2103
+ declare const themes: {
2104
+ /** Dark neutral: product demos, dev tools. */
2105
+ readonly graphite: {
2106
+ readonly elevation: {
2107
+ low: Elevation;
2108
+ mid: Elevation;
2109
+ high: Elevation;
2110
+ };
2111
+ readonly motion: {
2112
+ ease: {
2113
+ enter: string;
2114
+ exit: string;
2115
+ move: string;
2116
+ snap: string;
2117
+ };
2118
+ /** Durations in frames at 30 fps; see {@link themeFrames}. */
2119
+ speed: {
2120
+ fast: number;
2121
+ base: number;
2122
+ slow: number;
2123
+ };
2124
+ /** `settle` lands without overshoot, `base` overshoots a little, `pop` bounces. */
2125
+ spring: {
2126
+ settle: Spring;
2127
+ base: Spring;
2128
+ pop: Spring;
2129
+ };
2130
+ };
2131
+ readonly scale: 1;
2132
+ readonly radius: {
2133
+ sm: number;
2134
+ md: number;
2135
+ lg: number;
2136
+ pill: number;
2137
+ };
2138
+ readonly stroke: {
2139
+ hair: number;
2140
+ base: number;
2141
+ bold: number;
2142
+ };
2143
+ readonly mode: "dark";
2144
+ readonly color: {
2145
+ readonly bg: "#0d0e11";
2146
+ readonly surface: "#16181d";
2147
+ readonly raised: "#1f2229";
2148
+ readonly line: "#2b2f38";
2149
+ readonly ink: "#f3f4f6";
2150
+ readonly muted: "#8b909c";
2151
+ readonly accent: "#5b8cff";
2152
+ readonly accent2: "#b07cff";
2153
+ readonly positive: "#3ecf8e";
2154
+ readonly negative: "#ff5c5c";
2155
+ readonly highlight: "#ffd23f";
2156
+ readonly shadow: "#000000";
2157
+ };
2158
+ readonly font: {
2159
+ display: string;
2160
+ body: string;
2161
+ mono: string;
2162
+ hand?: string;
2163
+ };
2164
+ readonly weight: {
2165
+ regular: number;
2166
+ medium: number;
2167
+ semibold: number;
2168
+ bold: number;
2169
+ heavy: number;
2170
+ };
2171
+ };
2172
+ /** Light editorial: explainers, documentaries. */
2173
+ readonly paper: {
2174
+ readonly elevation: {
2175
+ low: Elevation;
2176
+ mid: Elevation;
2177
+ high: Elevation;
2178
+ };
2179
+ readonly motion: {
2180
+ ease: {
2181
+ enter: string;
2182
+ exit: string;
2183
+ move: string;
2184
+ snap: string;
2185
+ };
2186
+ /** Durations in frames at 30 fps; see {@link themeFrames}. */
2187
+ speed: {
2188
+ fast: number;
2189
+ base: number;
2190
+ slow: number;
2191
+ };
2192
+ /** `settle` lands without overshoot, `base` overshoots a little, `pop` bounces. */
2193
+ spring: {
2194
+ settle: Spring;
2195
+ base: Spring;
2196
+ pop: Spring;
2197
+ };
2198
+ };
2199
+ readonly scale: 1;
2200
+ readonly radius: {
2201
+ sm: number;
2202
+ md: number;
2203
+ lg: number;
2204
+ pill: number;
2205
+ };
2206
+ readonly stroke: {
2207
+ hair: number;
2208
+ base: number;
2209
+ bold: number;
2210
+ };
2211
+ readonly mode: "light";
2212
+ readonly color: {
2213
+ readonly bg: "#f4f1ea";
2214
+ readonly surface: "#fffdf8";
2215
+ readonly raised: "#ffffff";
2216
+ readonly line: "#dcd6c8";
2217
+ readonly ink: "#1a1814";
2218
+ readonly muted: "#6b665c";
2219
+ readonly accent: "#e0451f";
2220
+ readonly accent2: "#1f5fe0";
2221
+ readonly positive: "#1f8a4c";
2222
+ readonly negative: "#c8282d";
2223
+ readonly highlight: "#ffe066";
2224
+ readonly shadow: "#3b2f1e";
2225
+ };
2226
+ readonly font: {
2227
+ display: string;
2228
+ body: string;
2229
+ mono: string;
2230
+ hand?: string;
2231
+ };
2232
+ readonly weight: {
2233
+ regular: number;
2234
+ medium: number;
2235
+ semibold: number;
2236
+ bold: number;
2237
+ heavy: number;
2238
+ };
2239
+ };
2240
+ /** High contrast, saturated accent: social clips. */
2241
+ readonly signal: {
2242
+ readonly elevation: {
2243
+ low: Elevation;
2244
+ mid: Elevation;
2245
+ high: Elevation;
2246
+ };
2247
+ readonly motion: {
2248
+ readonly ease: {
2249
+ readonly enter: "back.out(1.8)";
2250
+ readonly exit: string;
2251
+ readonly move: string;
2252
+ readonly snap: string;
2253
+ };
2254
+ readonly speed: {
2255
+ readonly fast: 6;
2256
+ readonly base: 12;
2257
+ readonly slow: 24;
2258
+ };
2259
+ readonly spring: {
2260
+ readonly settle: {
2261
+ readonly stiffness: 300;
2262
+ readonly damping: 26;
2263
+ };
2264
+ readonly base: {
2265
+ readonly stiffness: 340;
2266
+ readonly damping: 22;
2267
+ };
2268
+ readonly pop: {
2269
+ readonly stiffness: 400;
2270
+ readonly damping: 14;
2271
+ };
2272
+ };
2273
+ };
2274
+ readonly scale: 1;
2275
+ readonly radius: {
2276
+ sm: number;
2277
+ md: number;
2278
+ lg: number;
2279
+ pill: number;
2280
+ };
2281
+ readonly stroke: {
2282
+ hair: number;
2283
+ base: number;
2284
+ bold: number;
2285
+ };
2286
+ readonly mode: "dark";
2287
+ readonly color: {
2288
+ readonly bg: "#000000";
2289
+ readonly surface: "#111111";
2290
+ readonly raised: "#1c1c1c";
2291
+ readonly line: "#333333";
2292
+ readonly ink: "#ffffff";
2293
+ readonly muted: "#a3a3a3";
2294
+ readonly accent: "#c6ff00";
2295
+ readonly accent2: "#ff2e88";
2296
+ readonly positive: "#00e676";
2297
+ readonly negative: "#ff1744";
2298
+ readonly highlight: "#c6ff00";
2299
+ readonly shadow: "#000000";
2300
+ };
2301
+ readonly font: {
2302
+ display: string;
2303
+ body: string;
2304
+ mono: string;
2305
+ hand?: string;
2306
+ };
2307
+ readonly weight: {
2308
+ regular: number;
2309
+ medium: number;
2310
+ semibold: number;
2311
+ bold: number;
2312
+ heavy: number;
2313
+ };
2314
+ };
2315
+ };
2316
+ type ThemeName = keyof typeof themes;
2317
+ /**
2318
+ * Merge a partial theme over a base (default `themes.graphite`). Throws when
2319
+ * `ink` on `surface` falls below WCAG 4.5:1 and both are hex colors.
2320
+ */
2321
+ declare function defineTheme(input?: ThemeInput | Theme, base?: Theme): Theme;
2322
+ /** A theme's duration token in frames at `fps`. */
2323
+ declare function themeFrames(theme: Theme, speed: keyof Theme["motion"]["speed"], fps?: number): number;
1954
2324
  //#endregion
1955
2325
  //#region src/core/path.d.ts
1956
2326
  /**
@@ -2149,9 +2519,13 @@ interface LayerStyleConfig {
2149
2519
  innerShadow?: {
2150
2520
  color?: string;
2151
2521
  opacity?: number;
2522
+ /** Degrees, as for drop shadows: 90 shades the bottom inside edge, 270 the top. */
2152
2523
  angle?: number;
2153
2524
  distance?: number;
2154
2525
  size?: number;
2526
+ choke?: number;
2527
+ /** Default `"multiply"` (a light color then does nothing: use `"normal"` or `"screen"`). */
2528
+ blendMode?: string;
2155
2529
  };
2156
2530
  stroke?: {
2157
2531
  size?: number;
@@ -2299,213 +2673,59 @@ interface CutoutOptions extends MediaOptions {
2299
2673
  mode?: "person" | "subject";
2300
2674
  }
2301
2675
  //#endregion
2302
- //#region src/core/theme.d.ts
2303
- interface Theme {
2304
- color: {
2305
- bg: string;
2306
- surface: string;
2307
- raised: string;
2308
- line: string;
2309
- ink: string;
2310
- muted: string;
2311
- accent: string;
2312
- accent2: string;
2313
- positive: string;
2314
- negative: string;
2315
- highlight: string;
2316
- };
2317
- font: {
2318
- display: string;
2319
- body: string;
2320
- mono: string;
2321
- hand?: string;
2322
- };
2323
- radius: {
2324
- sm: number;
2325
- md: number;
2326
- lg: number;
2327
- pill: number;
2328
- };
2329
- stroke: {
2330
- hair: number;
2331
- base: number;
2332
- bold: number;
2333
- };
2334
- motion: {
2335
- ease: {
2336
- enter: string;
2337
- exit: string;
2338
- move: string;
2339
- snap: string;
2340
- };
2341
- /** Durations in frames at 30 fps; see {@link themeFrames}. */
2342
- speed: {
2343
- fast: number;
2344
- base: number;
2345
- slow: number;
2346
- };
2347
- };
2348
- /** 1 = designed for 1080p. 2 for 4K, 0.5 for 540p. */
2349
- scale: number;
2676
+ //#region src/core/layout.d.ts
2677
+ /** The composition size a full-frame component covers. */
2678
+ interface CanvasSize {
2679
+ width: number;
2680
+ height: number;
2350
2681
  }
2351
- type ThemeInput = DeepPartial<Theme>;
2352
- type DeepPartial<T> = { [K in keyof T]?: T[K] extends object ? DeepPartial<T[K]> : T[K] };
2353
- /** Built-in themes. Fonts are never bundled: register the families you use. */
2354
- declare const themes: {
2355
- /** Dark neutral: product demos, dev tools. */
2356
- readonly graphite: {
2357
- readonly motion: {
2358
- ease: {
2359
- enter: string;
2360
- exit: string;
2361
- move: string;
2362
- snap: string;
2363
- };
2364
- /** Durations in frames at 30 fps; see {@link themeFrames}. */
2365
- speed: {
2366
- fast: number;
2367
- base: number;
2368
- slow: number;
2369
- };
2370
- };
2371
- readonly scale: 1;
2372
- readonly radius: {
2373
- sm: number;
2374
- md: number;
2375
- lg: number;
2376
- pill: number;
2377
- };
2378
- readonly stroke: {
2379
- hair: number;
2380
- base: number;
2381
- bold: number;
2382
- };
2383
- readonly color: {
2384
- readonly bg: "#0d0e11";
2385
- readonly surface: "#16181d";
2386
- readonly raised: "#1f2229";
2387
- readonly line: "#2b2f38";
2388
- readonly ink: "#f3f4f6";
2389
- readonly muted: "#8b909c";
2390
- readonly accent: "#5b8cff";
2391
- readonly accent2: "#b07cff";
2392
- readonly positive: "#3ecf8e";
2393
- readonly negative: "#ff5c5c";
2394
- readonly highlight: "#ffd23f";
2395
- };
2396
- readonly font: {
2397
- display: string;
2398
- body: string;
2399
- mono: string;
2400
- hand?: string;
2401
- };
2402
- };
2403
- /** Light editorial: explainers, documentaries. */
2404
- readonly paper: {
2405
- readonly motion: {
2406
- ease: {
2407
- enter: string;
2408
- exit: string;
2409
- move: string;
2410
- snap: string;
2411
- };
2412
- /** Durations in frames at 30 fps; see {@link themeFrames}. */
2413
- speed: {
2414
- fast: number;
2415
- base: number;
2416
- slow: number;
2417
- };
2418
- };
2419
- readonly scale: 1;
2420
- readonly radius: {
2421
- sm: number;
2422
- md: number;
2423
- lg: number;
2424
- pill: number;
2425
- };
2426
- readonly stroke: {
2427
- hair: number;
2428
- base: number;
2429
- bold: number;
2430
- };
2431
- readonly color: {
2432
- readonly bg: "#f4f1ea";
2433
- readonly surface: "#fffdf8";
2434
- readonly raised: "#ffffff";
2435
- readonly line: "#dcd6c8";
2436
- readonly ink: "#1a1814";
2437
- readonly muted: "#6b665c";
2438
- readonly accent: "#e0451f";
2439
- readonly accent2: "#1f5fe0";
2440
- readonly positive: "#1f8a4c";
2441
- readonly negative: "#c8282d";
2442
- readonly highlight: "#ffe066";
2682
+ /** Margins as shares of the frame: left / right `x`, `top`, `bottom`. */
2683
+ interface SafeInsets {
2684
+ x: number;
2685
+ top: number;
2686
+ bottom: number;
2687
+ }
2688
+ /**
2689
+ * Safe-area margins by use. Portrait leaves room for the captions, buttons
2690
+ * and handles that short-form platforms draw over the bottom and right.
2691
+ */
2692
+ declare const SAFE_INSETS: {
2693
+ /** Titles, plates, lower thirds. */
2694
+ readonly titles: {
2695
+ readonly landscape: {
2696
+ readonly x: 0.06;
2697
+ readonly top: 0.08;
2698
+ readonly bottom: 0.1;
2443
2699
  };
2444
- readonly font: {
2445
- display: string;
2446
- body: string;
2447
- mono: string;
2448
- hand?: string;
2700
+ readonly portrait: {
2701
+ readonly x: 0.08;
2702
+ readonly top: 0.1;
2703
+ readonly bottom: 0.24;
2449
2704
  };
2450
2705
  };
2451
- /** High contrast, saturated accent: social clips. */
2452
- readonly signal: {
2453
- readonly motion: {
2454
- readonly ease: {
2455
- readonly enter: "back.out(1.8)";
2456
- readonly exit: string;
2457
- readonly move: string;
2458
- readonly snap: string;
2459
- };
2460
- readonly speed: {
2461
- readonly fast: 6;
2462
- readonly base: 12;
2463
- readonly slow: 24;
2464
- };
2465
- };
2466
- readonly scale: 1;
2467
- readonly radius: {
2468
- sm: number;
2469
- md: number;
2470
- lg: number;
2471
- pill: number;
2472
- };
2473
- readonly stroke: {
2474
- hair: number;
2475
- base: number;
2476
- bold: number;
2477
- };
2478
- readonly color: {
2479
- readonly bg: "#000000";
2480
- readonly surface: "#111111";
2481
- readonly raised: "#1c1c1c";
2482
- readonly line: "#333333";
2483
- readonly ink: "#ffffff";
2484
- readonly muted: "#a3a3a3";
2485
- readonly accent: "#c6ff00";
2486
- readonly accent2: "#ff2e88";
2487
- readonly positive: "#00e676";
2488
- readonly negative: "#ff1744";
2489
- readonly highlight: "#c6ff00";
2706
+ /** Subtitles: narrower lines, the same bottom clearance. */
2707
+ readonly captions: {
2708
+ readonly landscape: {
2709
+ readonly x: 0.1;
2710
+ readonly top: 0.08;
2711
+ readonly bottom: 0.1;
2490
2712
  };
2491
- readonly font: {
2492
- display: string;
2493
- body: string;
2494
- mono: string;
2495
- hand?: string;
2713
+ readonly portrait: {
2714
+ readonly x: 0.08;
2715
+ readonly top: 0.12;
2716
+ readonly bottom: 0.22;
2496
2717
  };
2497
2718
  };
2498
2719
  };
2499
- type ThemeName = keyof typeof themes;
2500
2720
  /**
2501
- * Merge a partial theme over a base (default `themes.graphite`). Throws when
2502
- * `ink` on `surface` falls below WCAG 4.5:1 and both are hex colors.
2721
+ * The rect inside `canvas` that content keeps to. `area` forces an
2722
+ * orientation or gives the rect itself; by default a frame taller than it is
2723
+ * wide counts as portrait.
2503
2724
  */
2504
- declare function defineTheme(input?: ThemeInput | Theme, base?: Theme): Theme;
2505
- /** A theme's duration token in frames at `fps`. */
2506
- declare function themeFrames(theme: Theme, speed: keyof Theme["motion"]["speed"], fps?: number): number;
2507
- /** WCAG contrast ratio of two hex colors, or null when either isn't hex. */
2508
- declare function contrastRatio(a: string, b: string): number | null;
2725
+ declare function safeArea(canvas: CanvasSize, area?: "portrait" | "landscape" | Rect, insets?: {
2726
+ landscape: SafeInsets;
2727
+ portrait: SafeInsets;
2728
+ }): Rect;
2509
2729
  //#endregion
2510
2730
  //#region src/core/motion.d.ts
2511
2731
  type MotionPresetName = "none" | "fade" | "rise" | "drop" | "scale" | "pop" | "slide-left" | "slide-right" | "slide-up" | "slide-down" | "tilt" | "mask-up" | "mask-down" | "mask-left" | "mask-right";
@@ -2518,6 +2738,11 @@ interface MotionOptions {
2518
2738
  distance?: number;
2519
2739
  /** Frames to wait after the window starts (enter) or before it ends (exit). */
2520
2740
  delay?: number;
2741
+ /**
2742
+ * Motion blur while the stage moves: `true` (90° shutter), a shutter
2743
+ * angle in degrees, or `false`. Default on for `slide-*`, off otherwise.
2744
+ */
2745
+ blur?: boolean | number;
2521
2746
  }
2522
2747
  type MotionPreset = MotionPresetName | ({
2523
2748
  preset: MotionPresetName;
@@ -2528,6 +2753,8 @@ interface ResolvedMotion {
2528
2753
  ease: string;
2529
2754
  distance: number;
2530
2755
  delay: number;
2756
+ /** Shutter angle in degrees; 0 = no motion blur. */
2757
+ blur: number;
2531
2758
  }
2532
2759
  /** Normalise a preset (or `false`) against a theme and fps. */
2533
2760
  declare function resolveMotion(input: MotionPreset | false | undefined, kind: "enter" | "exit", theme: Theme, fps?: number): ResolvedMotion | null;
@@ -2622,6 +2849,7 @@ declare function basePropsSchema(): z.ZodObject<{
2622
2849
  ease: z.ZodOptional<z.ZodString>;
2623
2850
  distance: z.ZodOptional<z.ZodNumber>;
2624
2851
  delay: z.ZodOptional<z.ZodNumber>;
2852
+ blur: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodNumber]>>;
2625
2853
  }, z.core.$strip>]>, z.ZodLiteral<false>]>>;
2626
2854
  exit: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodEnum<{
2627
2855
  [x: string]: string;
@@ -2633,6 +2861,7 @@ declare function basePropsSchema(): z.ZodObject<{
2633
2861
  ease: z.ZodOptional<z.ZodString>;
2634
2862
  distance: z.ZodOptional<z.ZodNumber>;
2635
2863
  delay: z.ZodOptional<z.ZodNumber>;
2864
+ blur: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodNumber]>>;
2636
2865
  }, z.core.$strip>]>, z.ZodLiteral<false>]>>;
2637
2866
  x: z.ZodOptional<z.ZodNumber>;
2638
2867
  y: z.ZodOptional<z.ZodNumber>;
@@ -2643,6 +2872,7 @@ declare function basePropsSchema(): z.ZodObject<{
2643
2872
  relative: "relative";
2644
2873
  }>>;
2645
2874
  theme: z.ZodOptional<z.ZodCustom<{
2875
+ mode?: "dark" | "light" | undefined;
2646
2876
  color?: {
2647
2877
  bg?: string | undefined;
2648
2878
  surface?: string | undefined;
@@ -2655,6 +2885,7 @@ declare function basePropsSchema(): z.ZodObject<{
2655
2885
  positive?: string | undefined;
2656
2886
  negative?: string | undefined;
2657
2887
  highlight?: string | undefined;
2888
+ shadow?: string | undefined;
2658
2889
  } | undefined;
2659
2890
  font?: {
2660
2891
  display?: string | undefined;
@@ -2662,6 +2893,13 @@ declare function basePropsSchema(): z.ZodObject<{
2662
2893
  mono?: string | undefined;
2663
2894
  hand?: string | undefined;
2664
2895
  } | undefined;
2896
+ weight?: {
2897
+ regular?: number | undefined;
2898
+ medium?: number | undefined;
2899
+ semibold?: number | undefined;
2900
+ bold?: number | undefined;
2901
+ heavy?: number | undefined;
2902
+ } | undefined;
2665
2903
  radius?: {
2666
2904
  sm?: number | undefined;
2667
2905
  md?: number | undefined;
@@ -2673,6 +2911,26 @@ declare function basePropsSchema(): z.ZodObject<{
2673
2911
  base?: number | undefined;
2674
2912
  bold?: number | undefined;
2675
2913
  } | undefined;
2914
+ elevation?: {
2915
+ low?: {
2916
+ opacity?: number | undefined;
2917
+ distance?: number | undefined;
2918
+ size?: number | undefined;
2919
+ edge?: number | undefined;
2920
+ } | undefined;
2921
+ mid?: {
2922
+ opacity?: number | undefined;
2923
+ distance?: number | undefined;
2924
+ size?: number | undefined;
2925
+ edge?: number | undefined;
2926
+ } | undefined;
2927
+ high?: {
2928
+ opacity?: number | undefined;
2929
+ distance?: number | undefined;
2930
+ size?: number | undefined;
2931
+ edge?: number | undefined;
2932
+ } | undefined;
2933
+ } | undefined;
2676
2934
  motion?: {
2677
2935
  ease?: {
2678
2936
  enter?: string | undefined;
@@ -2685,9 +2943,25 @@ declare function basePropsSchema(): z.ZodObject<{
2685
2943
  base?: number | undefined;
2686
2944
  slow?: number | undefined;
2687
2945
  } | undefined;
2946
+ spring?: {
2947
+ settle?: {
2948
+ stiffness?: number | undefined;
2949
+ damping?: number | undefined;
2950
+ } | undefined;
2951
+ base?: {
2952
+ stiffness?: number | undefined;
2953
+ damping?: number | undefined;
2954
+ } | undefined;
2955
+ pop?: {
2956
+ stiffness?: number | undefined;
2957
+ damping?: number | undefined;
2958
+ } | undefined;
2959
+ } | undefined;
2688
2960
  } | undefined;
2961
+ syntax?: Partial<Record<SyntaxKind, string>> | undefined;
2689
2962
  scale?: number | undefined;
2690
2963
  }, {
2964
+ mode?: "dark" | "light" | undefined;
2691
2965
  color?: {
2692
2966
  bg?: string | undefined;
2693
2967
  surface?: string | undefined;
@@ -2700,6 +2974,7 @@ declare function basePropsSchema(): z.ZodObject<{
2700
2974
  positive?: string | undefined;
2701
2975
  negative?: string | undefined;
2702
2976
  highlight?: string | undefined;
2977
+ shadow?: string | undefined;
2703
2978
  } | undefined;
2704
2979
  font?: {
2705
2980
  display?: string | undefined;
@@ -2707,6 +2982,13 @@ declare function basePropsSchema(): z.ZodObject<{
2707
2982
  mono?: string | undefined;
2708
2983
  hand?: string | undefined;
2709
2984
  } | undefined;
2985
+ weight?: {
2986
+ regular?: number | undefined;
2987
+ medium?: number | undefined;
2988
+ semibold?: number | undefined;
2989
+ bold?: number | undefined;
2990
+ heavy?: number | undefined;
2991
+ } | undefined;
2710
2992
  radius?: {
2711
2993
  sm?: number | undefined;
2712
2994
  md?: number | undefined;
@@ -2718,6 +3000,26 @@ declare function basePropsSchema(): z.ZodObject<{
2718
3000
  base?: number | undefined;
2719
3001
  bold?: number | undefined;
2720
3002
  } | undefined;
3003
+ elevation?: {
3004
+ low?: {
3005
+ opacity?: number | undefined;
3006
+ distance?: number | undefined;
3007
+ size?: number | undefined;
3008
+ edge?: number | undefined;
3009
+ } | undefined;
3010
+ mid?: {
3011
+ opacity?: number | undefined;
3012
+ distance?: number | undefined;
3013
+ size?: number | undefined;
3014
+ edge?: number | undefined;
3015
+ } | undefined;
3016
+ high?: {
3017
+ opacity?: number | undefined;
3018
+ distance?: number | undefined;
3019
+ size?: number | undefined;
3020
+ edge?: number | undefined;
3021
+ } | undefined;
3022
+ } | undefined;
2721
3023
  motion?: {
2722
3024
  ease?: {
2723
3025
  enter?: string | undefined;
@@ -2730,11 +3032,30 @@ declare function basePropsSchema(): z.ZodObject<{
2730
3032
  base?: number | undefined;
2731
3033
  slow?: number | undefined;
2732
3034
  } | undefined;
3035
+ spring?: {
3036
+ settle?: {
3037
+ stiffness?: number | undefined;
3038
+ damping?: number | undefined;
3039
+ } | undefined;
3040
+ base?: {
3041
+ stiffness?: number | undefined;
3042
+ damping?: number | undefined;
3043
+ } | undefined;
3044
+ pop?: {
3045
+ stiffness?: number | undefined;
3046
+ damping?: number | undefined;
3047
+ } | undefined;
3048
+ } | undefined;
2733
3049
  } | undefined;
3050
+ syntax?: Partial<Record<SyntaxKind, string>> | undefined;
2734
3051
  scale?: number | undefined;
2735
3052
  }>>;
2736
3053
  seed: z.ZodOptional<z.ZodNumber>;
2737
3054
  fps: z.ZodOptional<z.ZodNumber>;
3055
+ canvas: z.ZodOptional<z.ZodObject<{
3056
+ width: z.ZodNumber;
3057
+ height: z.ZodNumber;
3058
+ }, z.core.$strict>>;
2738
3059
  customize: z.ZodOptional<z.ZodCustom<(parts: Record<string, Animatable<LayoutNode>>) => void, (parts: Record<string, Animatable<LayoutNode>>) => void>>;
2739
3060
  }, z.core.$strip>;
2740
3061
  interface BaseProps {
@@ -2761,6 +3082,11 @@ interface BaseProps {
2761
3082
  seed?: number;
2762
3083
  /** Composition frame rate: theme speeds and real-time inputs scale by it. Default 30. */
2763
3084
  fps?: number;
3085
+ /**
3086
+ * Composition size, for components that cover the frame (captions,
3087
+ * backdrops, spotlights …). Default 1920 × 1080 × `theme.scale`.
3088
+ */
3089
+ canvas?: CanvasSize;
2764
3090
  /** Receives every built part before the component returns. */
2765
3091
  customize?: (parts: Record<string, Animatable<LayoutNode>>) => void;
2766
3092
  }
@@ -2784,6 +3110,8 @@ interface BuildContext {
2784
3110
  };
2785
3111
  /** Frames the finished state holds (base `hold`, or the component's default). */
2786
3112
  hold: number;
3113
+ /** The composition size (base `canvas`, or 1920 × 1080 × theme scale). */
3114
+ canvas: CanvasSize;
2787
3115
  }
2788
3116
  /** Where the root ended up: what a component's `api` can rely on. */
2789
3117
  interface Placement {
@@ -2864,8 +3192,34 @@ interface ComponentExtras<C extends Cues> {
2864
3192
  };
2865
3193
  /** A named part (`root`, `stage`, and the component's own). */
2866
3194
  part(name: string): Animatable<LayoutNode> | undefined;
3195
+ /** Every name `part()` and `customize` answer to. */
3196
+ readonly partNames: readonly string[];
2867
3197
  }
2868
3198
  type ComponentNode$1<C extends Cues> = Animatable<BoxNode> & ComponentExtras<C>;
3199
+ /** Base props a project usually sets once: see {@link withDefaults}. */
3200
+ type ProjectDefaults = Pick<BaseProps, "fps" | "canvas" | "seed"> & {
3201
+ theme?: ThemeInput | Theme;
3202
+ };
3203
+ /**
3204
+ * Wrap component factories so every call starts from the project's frame
3205
+ * rate, canvas, theme and seed. Props given at the call win; a call's
3206
+ * partial `theme` merges over the default theme, not over `graphite`.
3207
+ *
3208
+ * ```ts
3209
+ * const ui = withDefaults({ fps: 60, canvas: { width: 1080, height: 1920 }, theme: themes.paper });
3210
+ * const Captions = ui(CaptionsBase);
3211
+ * ```
3212
+ */
3213
+ declare function withDefaults(defaults: ProjectDefaults): <P extends BaseProps, R>(factory: (props: P) => R) => (props: P) => R;
3214
+ /**
3215
+ * The frame `gap` frames after `node` ends: `at: after(title, 6)`. Throws
3216
+ * for open-ended components, which have no end until given a `duration`.
3217
+ */
3218
+ declare function after(node: {
3219
+ readonly span: {
3220
+ end: number;
3221
+ };
3222
+ }, gap?: number): number;
2869
3223
  /**
2870
3224
  * Bind a definition to a host, producing the user-facing factory. framefields
2871
3225
  * calls this once per component behind a PURE annotation, so bundlers drop
@@ -2960,6 +3314,52 @@ declare function evaluateGlyphExpression(expression: string, scope: {
2960
3314
  lineIndex?: number;
2961
3315
  }): number;
2962
3316
  //#endregion
3317
+ //#region src/core/keys.d.ts
3318
+ /** Round to `places` decimals (default 3): keeps baked keys short and stable. */
3319
+ declare const round: (v: number, places?: number) => number;
3320
+ /** The last element, or `undefined`. */
3321
+ declare const last: <T>(list: readonly T[]) => T | undefined;
3322
+ /**
3323
+ * Keys in ascending frame order; of several keys on one frame, the one given
3324
+ * last wins. Input order is otherwise free.
3325
+ */
3326
+ declare function ascending(keys: readonly KeyframeTuple[]): KeyframeTuple[];
3327
+ /**
3328
+ * Keys written as a timeline where each key supersedes what came before at
3329
+ * or after its frame: a key earlier than the previous one drops the later
3330
+ * ones (a retarget cancels the planned rest of a move).
3331
+ */
3332
+ declare function supersede(keys: readonly KeyframeTuple[]): KeyframeTuple[];
3333
+ /**
3334
+ * A numeric track's value at `frame`, the way the renderer evaluates it:
3335
+ * each segment eased by its end key's ease, `hold` stepping on the key.
3336
+ */
3337
+ declare function valueAt(keys: readonly KeyframeTuple[], frame: number): number;
3338
+ /** A value track built from transitions: each eases from wherever the value is to `to`. */
3339
+ declare class Track {
3340
+ private readonly initial;
3341
+ private changes;
3342
+ constructor(initial: number);
3343
+ to(start: number, end: number, value: number, ease?: string): this;
3344
+ /** Jump to `value` on `frame` (a hold key). */
3345
+ set(frame: number, value: number): this;
3346
+ /** Ascending keyframes; a change that starts mid-transition starts from its target. */
3347
+ keys(): KeyframeTuple[];
3348
+ }
3349
+ /**
3350
+ * Keys collected per node and prop from anywhere in a build, merged into one
3351
+ * ascending track each and applied with one `animate()` per node.
3352
+ */
3353
+ declare class KeyBook<N extends {
3354
+ animate(...anims: unknown[]): unknown;
3355
+ }> {
3356
+ private readonly book;
3357
+ /** Append keys for `node`'s `prop` (merged with any already given). */
3358
+ key(node: N, prop: AnimatableProp | (string & {}), keys: KeyframeTuple[]): this;
3359
+ /** Animate every node once with its merged tracks. */
3360
+ apply(): void;
3361
+ }
3362
+ //#endregion
2963
3363
  //#region src/core/meta.d.ts
2964
3364
  /**
2965
3365
  * Component metadata: the discovery surface for docs and coding agents.
@@ -2980,6 +3380,19 @@ interface ComponentMeta {
2980
3380
  example: string;
2981
3381
  /** Spec milestone that introduced it. */
2982
3382
  since: string;
3383
+ /**
3384
+ * Fonts it draws with beyond the theme's families. `framefields add`
3385
+ * installs each one into the project (pinned, hash-checked) and registers
3386
+ * it in the generated `fonts.ts`.
3387
+ */
3388
+ fonts?: readonly FontNeed[];
3389
+ }
3390
+ /** Fonts `framefields add` knows how to install, by role. */
3391
+ type FontRole = "emoji" | "sans" | "mono";
3392
+ interface FontNeed {
3393
+ font: FontRole;
3394
+ /** Why, shown when `add` installs it. */
3395
+ why: string;
2983
3396
  }
2984
3397
  declare function defineMeta(meta: ComponentMeta): ComponentMeta;
2985
3398
  //#endregion
@@ -3074,6 +3487,19 @@ declare function targetPoint(resolved: ResolvedTarget, frame?: number, isText?:
3074
3487
  /** Any `Target`: [x, y], a rect, { node }, { text }, { track }, or (frame) => point. */
3075
3488
  declare function targetSchema(): z.ZodType<Target>;
3076
3489
  //#endregion
3490
+ //#region src/core/surface.d.ts
3491
+ type ElevationLevel = keyof Theme["elevation"];
3492
+ /** Layer styles for `level`: a drop shadow and, when the theme asks, a top-edge highlight. */
3493
+ declare function elevationStyle(theme: Theme, level: ElevationLevel): LayerStyleConfig;
3494
+ /** Put `node` at `level` (or leave it flat for `false`); returns it. */
3495
+ declare function elevate<T extends Animatable<LayoutNode>>(host: Host, node: T, theme: Theme, level: ElevationLevel | false): T;
3496
+ /**
3497
+ * A background for a surface of `color`: a vertical sheen a few percent
3498
+ * lighter at the top on dark themes (light themes stay flat, where a
3499
+ * lighter top reads as a glare). Non-hex / non-rgb colors pass through.
3500
+ */
3501
+ declare function surfaceFill(color: string, theme: Theme, sheen?: number): string;
3502
+ //#endregion
3077
3503
  //#region src/core/timing.d.ts
3078
3504
  /** Seconds → whole frames. */
3079
3505
  declare function toFrames(seconds: number, fps: number): number;
@@ -5962,5 +6388,5 @@ type ComponentNode<C extends Cues = Cues> = AnimatableNode<BoxNode> & ComponentE
5962
6388
  */
5963
6389
  declare function bindComponent<S$1 extends z.ZodRawShape, C extends Cues, E extends object = object>(definition: ComponentDefinition<S$1, C, E>): (props: z.input<z.ZodObject<S$1>> & BaseProps) => ComponentNode<C> & E;
5964
6390
  //#endregion
5965
- export { InterpolateOptions as $, MediaAnimatableProp as $a, themes as $i, Cues as $n, basePropsSchema as $r, PoseKeypointName as $t, Physics as A, CompositorProgramSchema as Aa, offsetCues as Ai, QueueStatus as An, WiggleOptions as Ao, ResolvedTarget as Ar, Plane3DOptions as At, FieldSample2D as B, Keyframe as Ba, scheduleExpression as Bi, ArrowCurve as Bn, evaluateTrackAtFrame as Bo, TrackedObjectLike as Br, BodyCommonOptions as Bt, TrackEditing as C, CarrierHandoffConfig as Ca, glyphAnimator as Ci, span as Cn, TextNode as Co, MotionSize as Cr, Cube3DOptions as Ct, section as D, ColorStop as Da, lerp2 as Di, AiConfig as Dn, ToneMapping as Do, PulseOptions as Dr, ExtrudedText3DOptions as Dt, editTrackedRegion as E, ColorSignalOptions as Ea, holdFirstKeys as Ei, Ai as En, TextSpanSchema as Eo, PropsOf as Er, Cylinder3DOptions as Et, PhysicsRope3DOptions as F, EnvironmentPreset as Fa, resampleBands as Fi, AnalyzeOptions as Fn, computeCarrierContinuity as Fo, TargetNode as Fr, Sphere3DOptions as Ft, PhysicsSpringOptions as G, LightNode as Ga, squigglePath as Gi, BaseProps as Gn, analyzeChannels as Gr, EmitterShape as Gt, PhysicsGroundOptions as H, LayerAnimation as Ha, springAt as Hi, AudioLevels as Hn, lintComposition as Ho, UnitSchedule as Hr, PhysicsCollision as Ht, PhysicsSpring3DOptions as I, EnvironmentPresetSchema as Ia, resolveMotion as Ii, Anchor as In, computeLayout as Io, TextLayout as Ir, Surface3DOptions as It, World2DOptions as J, LightTypeSchema as Ja, stepExpression as Ji, ComponentDefaults as Jn, arrowPaths as Jr, ParticleShape as Jt, PhysicsWallsOptions as K, LightNodeSchema as Ka, staggerOffsets as Ki, BuildContext as Kn, anchorPoint as Kr, ParticleBlend as Kt, PhysicsWorld3D as L, FlexNode as La, resolveTarget as Li, Animatable as Ln, computeLayoutSync as Lo, Theme as Lr, Text3DOptions as Lt, FieldSample3D as M, EaseRef as Ma, quantize as Mi, RunOptions as Mn, calculateSequenceTimeline as Mo, StaggerOrder as Mr, Prism3DOptions as Mt, PhysicsBody3D as N, EnvironmentFog as Na, rangeRects as Ni, ValidationError as Nn, collectNodeOps as No, Target as Nr, RoundedBox3DOptions as Nt, StyleName as O, ColorStopSchema as Oa, linePath as Oi, ApiError as On, ToneMappingSchema as Oo, Rect as Or, Grid3DOptions as Ot, PhysicsBox3D as P, EnvironmentFogSchema as Pa, rendererChars as Pi, ai as Pn, compositorToProgram as Po, TargetContext as Pr, Shape3DContainer as Pt, Easing as Q, MatteModeSchema as Qa, themeFrames as Qi, Cue as Qn, bandEdges as Qr, PersonTrack as Qt, World3DOptions as R, FlexNodeSchema as Ra, rng as Ri, AnimatableMethods as Rn, computeStaggerDelay as Ro, ThemeInput as Rr, Particles as Rt, SubjectSandwichOptions as S, CameraShake as Sa, frameSpan as Si, size as Sn, TextAnimatorSchema as So, MotionPresetName as Sr, Carousel3DOptions as St, blurRegion as T, CarrierState as Ta, hashString as Ti, sup as Tn, TextSpanMarkSchema as To, Placement as Tr, CubeFaceInput as Tt, PhysicsRect as U, LayoutNode as Ua, springKeys as Ui, BakeOptions as Un, mergeAnimationTracks as Uo, Vec2$1 as Ur, PhysicsDriver as Ut, PhysicsBody2D as V, KeyframeTuple as Va, smoothRelease as Vi, ArrowGeometry as Vn, hoistMattes as Vo, UNIT_INDEX as Vr, PhysicsBakeOptions as Vt, PhysicsRopeOptions as W, LayoutNodeSchema as Wa, springSettleFrames as Wi, BakedKey as Wn, WordRange as Wr, PhysicsWorldOptions as Wt, LightingRig as X, MaterialTypeSchema as Xa, targetSchema as Xi, ComponentExtras as Xn, bakeFunction as Xr, ClipVisionOptions as Xt, Lighting as Y, MaterialType as Ya, targetPoint as Yi, ComponentDefinition as Yn, audioLevelsSchema as Yr, ClipVision as Yt, LightingRigOptions as Z, MatteMode as Za, textLayout as Zi, ComponentMeta as Zn, bakeSamples as Zr, PersonPlacement as Zt, RenderVideoResult as _, CameraAnimation as _a, enterAnimation as _i, italic as _n, SignalTrackOptions as _o, MeasureOptions as _r, SequenceEntry as _t, AnimatableNode as a, windowExpression as aa, catmullRom as ai, ChartPadding as an, Scene as ao, FrameValue as ar, computeStrokeRect as at, SmartFramingOptions as b, CameraNode as ba, exitAnimation as bi, parseMarkup as bn, TextAnimatableProp as bo, MotionOptions as br, TransitionDirection as bt, CompositionOptions as c, wordRanges as ca, contrastRatio as ci, ChartType as cn, SceneOptions as co, GlyphBox as cr, measureSpring as ct, EnvironmentOptions as d, AnimationTrack as da, defineMeta as di, MarkOptions as dn, Sequence as do, GrainOptions as dr, preloadCompositionFonts as dt, toFrames as ea, beats as ei, ChartAnimationOptions as en, MediaNode as eo, CuesOf as er, SpringConfig as et, Layer as f, BlockNode as fa, defineTheme as fi, TextSpanItem as fn, SequenceOptions as fo, HandOptions as fr, preloadFont as ft, RenderVideoOptions as g, BoxNodeSchema as ga, ellipsePath as gi, color as gn, ShapeNodeSchema as go, MeasureFn as gr, SceneSequenceOptions as gt, NodeCapability as h, BoxNode as ha, ease$1 as hi, code as hn, ShapeNode as ho, MOTION_PRESETS as hr, springCalculation as ht, analyzeAudio as i, typingFrames as ia, boxPath as ii, ChartOptions as in, Model3DNodeSchema as io, FrameContextLike as ir, bezier as it, Body3DOptions as j, CompositorToProgramOptions as ja, pulseKeys as ji, Result as jn, applyStaggerToChildren as jo, Rng as jr, Primitive3DNodeOptions as jt, Styles as k, CompositorProgramConfig as ka, lineShift as ki, FRAMEFIELDS_AI_PROXY_URL as kn, TrackSource as ko, ResolvedMotion as kr, Layer3D as kt, EditableObjectTrack as l, AnimatableProp as la, cover as li, ChartX as ln, SceneTransitionType as lo, GlyphProps as lr, measureText as lt, Media as m, BloomConfigSchema as ma, drawOnKeys as mi, bold as mn, ShapeAnimatableProp as mo, LayerStyleConfig as mr, spring as mt, bindComponent as n, toSeconds as na, boilKeys as ni, ChartCandle as nn, Model3DAnimatableProp as no, EaseFn as nr, TextMeasureResult as nt, CompatibleEffect as o, within as oa, chain as oi, ChartSeries as on, SceneDefinition as oo, FrameWindow as or, interpolate as ot, Light as p, BloomConfig as pa, dist as pi, accent as pn, SequenceTimelineResult as po, Host as pr, requiresIsolation as pt, PhysicsWorld2D as q, LightType as qa, staggerRanks as qi, BuildResult as qn, arcPath as qr, ParticleBounds as qt, z$2 as r, transformPathData as ra, boundsOf as ri, ChartDatum as rn, Model3DNode as ro, ExtrudedTextOptions as rr, TextMeasureStyle as rt, Composition as s, wobblePoints as sa, constantExpression as si, ChartSlice as sn, SceneDefinitionSchema as so, GlyphAnimator as sr, mapBlendModeToSkia as st, ComponentNode as t, toPathData as ta, bind as ti, ChartAxisOptions as tn, MediaNodeSchema as to, CutoutOptions as tr, StrokeRect as tt, Effect as u, AnimatablePropsFor as ua, defineComponent as ui, DEFAULT_CHART_COLORS as un, SceneTransitionTypeSchema as uo, GlyphUnit as ur, measureTextAsync as ut, SectionNode as v, CameraDoF as va, evaluateEase as vi, mark as vn, SizeSpec as vo, MediaOptions as vr, SequenceNode as vt, TrackedRegionOptions as w, CarrierHandoffConfigSchema as wa, hashRng as wi, sub as wn, TextNodeSchema as wo, ParticleOptions as wr, CubeFaceConfig as wt, SubjectOutlineOptions as x, CameraNodeSchema as xa, findRange as xi, rich as xn, TextAnimator as xo, MotionPreset as xr, TransitionSpec as xt, SectionOptions as y, CameraLens as ya, evaluateGlyphExpression as yi, normalizeTextSpans as yn, SpringOptions as yo, Metrics$1 as yr, Transition as yt, Body2DOptions as z, FromToOptions as za, scaleFrames as zi, ArcPath as zn, evaluateAnimationAtFrame as zo, ThemeName as zr, ParticlesOptions as zt };
5966
- //# sourceMappingURL=index-N1tMc5Z9.d.mts.map
6391
+ export { InterpolateOptions as $, CameraNodeSchema as $a, parseColor as $i, Cue as $n, TextAnimator as $o, TrackedObjectLike as $r, PoseKeypointName as $t, Physics as A, toSeconds as Aa, ease$1 as Ai, QueueStatus as An, MatteModeSchema as Ao, ParticleOptions as Ar, Plane3DOptions as At, FieldSample2D as B, wordRanges as Ba, glyphAnimator as Bi, ArrowCurve as Bn, SceneOptions as Bo, SAFE_INSETS as Br, BodyCommonOptions as Bt, TrackEditing as C, targetPoint as Ca, contrastRatio as Ci, span as Cn, LightNode as Co, MeasureOptions as Cr, Cube3DOptions as Ct, section as D, themes as Da, defineTheme as Di, AiConfig as Dn, MaterialType as Do, MotionPreset as Dr, ExtrudedText3DOptions as Dt, editTrackedRegion as E, themeFrames as Ea, defineMeta as Ei, Ai as En, LightTypeSchema as Eo, MotionOptions as Er, Cylinder3DOptions as Et, PhysicsRope3DOptions as F, windowExpression as Fa, evaluateEase as Fi, AnalyzeOptions as Fn, Model3DNode as Fo, Rect as Fr, Sphere3DOptions as Ft, PhysicsSpringOptions as G, BloomConfig as Ga, isLight as Gi, BaseProps as Gn, SequenceTimelineResult as Go, Target as Gr, EmitterShape as Gt, PhysicsGroundOptions as H, AnimatablePropsFor as Ha, hashString as Hi, AudioLevels as Hn, SceneTransitionTypeSchema as Ho, Spring as Hr, PhysicsCollision as Ht, PhysicsSpring3DOptions as I, withAlpha as Ia, evaluateGlyphExpression as Ii, Anchor as In, Model3DNodeSchema as Io, ResolvedMotion as Ir, Surface3DOptions as It, World2DOptions as J, BoxNodeSchema as Ja, linePath as Ji, CanvasSize as Jn, ShapeNodeSchema as Jo, TextLayout as Jr, ParticleShape as Jt, PhysicsWallsOptions as K, BloomConfigSchema as Ka, last as Ki, BuildContext as Kn, ShapeAnimatableProp as Ko, TargetContext as Kr, ParticleBlend as Kt, PhysicsWorld3D as L, withDefaults as La, exitAnimation as Li, Animatable as Ln, Scene as Lo, ResolvedTarget as Lr, Text3DOptions as Lt, FieldSample3D as M, transparent as Ma, elevationStyle as Mi, RunOptions as Mn, MediaNode as Mo, ProjectDefaults as Mr, Prism3DOptions as Mt, PhysicsBody3D as N, typingFrames as Na, ellipsePath as Ni, ValidationError as Nn, MediaNodeSchema as No, PropsOf as Nr, RoundedBox3DOptions as Nt, StyleName as O, toFrames as Oa, dist as Oi, ApiError as On, MaterialTypeSchema as Oo, MotionPresetName as Or, Grid3DOptions as Ot, PhysicsBox3D as P, valueAt as Pa, enterAnimation as Pi, ai as Pn, Model3DAnimatableProp as Po, PulseOptions as Pr, Shape3DContainer as Pt, Easing as Q, CameraNode as Qa, offsetCues as Qi, ComponentMeta as Qn, TextAnimatableProp as Qo, Track as Qr, PersonTrack as Qt, World3DOptions as R, within as Ra, findRange as Ri, AnimatableMethods as Rn, SceneDefinition as Ro, Rgba as Rr, Particles as Rt, SubjectSandwichOptions as S, surfaceFill as Sa, constantExpression as Si, size as Sn, LayoutNodeSchema as So, MeasureFn as Sr, Carousel3DOptions as St, blurRegion as T, textLayout as Ta, defineComponent as Ti, sup as Tn, LightType as To, Metrics$1 as Tr, CubeFaceInput as Tt, PhysicsRect as U, AnimationTrack as Ua, holdFirstKeys as Ui, BakeOptions as Un, Sequence as Uo, StaggerOrder as Ur, PhysicsDriver as Ut, PhysicsBody2D as V, AnimatableProp as Va, hashRng as Vi, ArrowGeometry as Vn, SceneTransitionType as Vo, SafeInsets as Vr, PhysicsBakeOptions as Vt, PhysicsRopeOptions as W, BlockNode as Wa, inkOn as Wi, BakedKey as Wn, SequenceOptions as Wo, SyntaxKind as Wr, PhysicsWorldOptions as Wt, LightingRig as X, CameraDoF as Xa, luminance as Xi, ComponentDefinition as Xn, SizeSpec as Xo, ThemeInput as Xr, ClipVisionOptions as Xt, Lighting as Y, CameraAnimation as Ya, lineShift as Yi, ComponentDefaults as Yn, SignalTrackOptions as Yo, Theme as Yr, ClipVision as Yt, LightingRigOptions as Z, CameraLens as Za, mix as Zi, ComponentExtras as Zn, SpringOptions as Zo, ThemeName as Zr, PersonPlacement as Zt, RenderVideoResult as _, squigglePath as _a, boilKeys as _i, italic as _n, FromToOptions as _o, HandOptions as _r, evaluateAnimationAtFrame as _s, SequenceEntry as _t, AnimatableNode as a, resolveMotion as aa, analyzeChannels as ai, ChartPadding as an, ColorStop as ao, ElevationLevel as ar, ToneMapping as as, computeStrokeRect as at, SmartFramingOptions as b, stepExpression as ba, catmullRom as bi, parseMarkup as bn, LayerAnimation as bo, LayerStyleConfig as br, lintComposition as bs, TransitionDirection as bt, CompositionOptions as c, round as ca, arrowPaths as ci, ChartType as cn, CompositorProgramSchema as co, FontRole as cr, WiggleOptions as cs, measureSpring as ct, EnvironmentOptions as d, scheduleExpression as da, bakeFunction as di, MarkOptions as dn, EnvironmentFog as do, FrameWindow as dr, collectNodeOps as ds, preloadCompositionFonts as dt, pulseKeys as ea, UNIT_INDEX as ei, ChartAnimationOptions as en, CameraShake as eo, Cues as er, TextAnimatorSchema as es, SpringConfig as et, Layer as f, smoothRelease as fa, bakeSamples as fi, TextSpanItem as fn, EnvironmentFogSchema as fo, GlyphAnimator as fr, compositorToProgram as fs, preloadFont as ft, RenderVideoOptions as g, springTrack as ga, bind as gi, color as gn, FlexNodeSchema as go, GrainOptions as gr, computeStaggerDelay as gs, SceneSequenceOptions as gt, NodeCapability as h, springSettleFrames as ha, beats as hi, code as hn, FlexNode as ho, GlyphUnit as hr, computeLayoutSync as hs, springCalculation as ht, analyzeAudio as i, resampleBands as ia, after as ii, ChartOptions as in, ColorSignalOptions as io, Elevation as ir, TextSpanSchema as is, bezier as it, Body3DOptions as j, transformPathData as ja, elevate as ji, Result as jn, MediaAnimatableProp as jo, Placement as jr, Primitive3DNodeOptions as jt, Styles as k, toPathData as ka, drawOnKeys as ki, FRAMEFIELDS_AI_PROXY_URL as kn, MatteMode as ko, MotionSize as kr, Layer3D as kt, EditableObjectTrack as l, safeArea as la, ascending as li, ChartX as ln, CompositorToProgramOptions as lo, FrameContextLike as lr, applyStaggerToChildren as ls, measureText as lt, Media as m, springKeys as ma, basePropsSchema as mi, bold as mn, EnvironmentPresetSchema as mo, GlyphProps as mr, computeLayout as ms, spring as mt, bindComponent as n, rangeRects as na, Vec2$1 as ni, ChartCandle as nn, CarrierHandoffConfigSchema as no, CutoutOptions as nr, TextNodeSchema as ns, TextMeasureResult as nt, CompatibleEffect as o, resolveTarget as oa, anchorPoint as oi, ChartSeries as on, ColorStopSchema as oo, ExtrudedTextOptions as or, ToneMappingSchema as os, interpolate as ot, Light as p, springAt as pa, bandEdges as pi, accent as pn, EnvironmentPreset as po, GlyphBox as pr, computeCarrierContinuity as ps, requiresIsolation as pt, PhysicsWorld2D as q, BoxNode as qa, lerp2 as qi, BuildResult as qn, ShapeNode as qo, TargetNode as qr, ParticleBounds as qt, z$2 as r, rendererChars as ra, WordRange as ri, ChartDatum as rn, CarrierState as ro, EaseFn as rr, TextSpanMarkSchema as rs, TextMeasureStyle as rt, Composition as s, rng as sa, arcPath as si, ChartSlice as sn, CompositorProgramConfig as so, FontNeed as sr, TrackSource as ss, mapBlendModeToSkia as st, ComponentNode as t, quantize as ta, UnitSchedule as ti, ChartAxisOptions as tn, CarrierHandoffConfig as to, CuesOf as tr, TextNode as ts, StrokeRect as tt, Effect as u, scaleFrames as ua, audioLevelsSchema as ui, DEFAULT_CHART_COLORS as un, EaseRef as uo, FrameValue as ur, calculateSequenceTimeline as us, measureTextAsync as ut, SectionNode as v, staggerOffsets as va, boundsOf as vi, mark as vn, Keyframe as vo, Host as vr, evaluateTrackAtFrame as vs, SequenceNode as vt, TrackedRegionOptions as w, targetSchema as wa, cover as wi, sub as wn, LightNodeSchema as wo, MediaOptions as wr, CubeFaceConfig as wt, SubjectOutlineOptions as x, supersede as xa, chain as xi, rich as xn, LayoutNode as xo, MOTION_PRESETS as xr, mergeAnimationTracks as xs, TransitionSpec as xt, SectionOptions as y, staggerRanks as ya, boxPath as yi, normalizeTextSpans as yn, KeyframeTuple as yo, KeyBook as yr, hoistMattes as ys, Transition as yt, Body2DOptions as z, wobblePoints as za, frameSpan as zi, ArcPath as zn, SceneDefinitionSchema as zo, Rng as zr, ParticlesOptions as zt };
6392
+ //# sourceMappingURL=index-E1IrPAm4.d.mts.map