@cueframe/kernel 0.0.1 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (432) hide show
  1. package/LICENSE +661 -0
  2. package/dist/_members/account-model/testing/conversationStoreContract.d.ts +1 -1
  3. package/dist/_members/authoring/providers/resourceApi.d.ts +1 -1
  4. package/dist/_members/authoring/transpileComponent.d.ts +1 -1
  5. package/dist/_members/cloud-import/CloudImportService.d.ts +35 -0
  6. package/dist/_members/cloud-import/ImportProvider.d.ts +73 -0
  7. package/dist/_members/cloud-import/MediaItemPreprocessor.d.ts +27 -0
  8. package/dist/_members/cloud-import/cloudConfig.d.ts +23 -0
  9. package/dist/_members/cloud-import/index.d.ts +9 -0
  10. package/dist/_members/cloud-import/multipartUpload.d.ts +12 -0
  11. package/dist/_members/composition/ops/compositionOps.d.ts +2 -1
  12. package/dist/_members/composition/ops/types.d.ts +1 -1
  13. package/dist/_members/composition/projection/behind-readiness.d.ts +127 -0
  14. package/dist/_members/composition/projection/index.d.ts +2 -0
  15. package/dist/_members/composition/projection/reframe-readiness.d.ts +156 -0
  16. package/dist/_members/composition/timeline/placement.d.ts +1 -1
  17. package/dist/_members/composition/validators/composition.d.ts +43 -26
  18. package/dist/_members/composition/validators/render.d.ts +32 -0
  19. package/dist/_members/composition-ops/index.d.ts +1 -1
  20. package/dist/_members/composition-ops/opRecorder.d.ts +1 -1
  21. package/dist/_members/convex-api/api.d.ts +5 -0
  22. package/dist/_members/convex-api/dataModel.d.ts +6 -0
  23. package/dist/_members/core/render/compositionRender.d.ts +17 -1
  24. package/dist/_members/core/render/exportSettings.d.ts +1 -1
  25. package/dist/_members/core/render/types.d.ts +31 -0
  26. package/dist/_members/mcp/curation.d.ts +1 -1
  27. package/dist/_members/plane/conformance.d.ts +1 -1
  28. package/dist/_members/render-harness/localRender.d.ts +1 -1
  29. package/dist/animate.js +828 -79187
  30. package/dist/authoring/build-tools.js +8 -11
  31. package/dist/authoring/context.js +5 -5
  32. package/dist/authoring/models.js +1 -2
  33. package/dist/authoring/prompts.js +1 -1
  34. package/dist/authoring/tools.js +7 -7
  35. package/dist/authoring/transpileComponent.js +3 -2220
  36. package/dist/authoring.js +30 -30
  37. package/dist/brand-derivation.js +1 -1
  38. package/dist/chunk-6IU2UQI5.js +107 -0
  39. package/dist/{chunk-5I7VDCAC.js → chunk-7FO3ZJ43.js} +4 -1
  40. package/dist/{chunk-N67PDTKQ.js → chunk-ABL557OT.js} +1 -1
  41. package/dist/{chunk-MC5DLSEV.js → chunk-AP6ZIVAV.js} +15 -15
  42. package/dist/{chunk-QLAQHR3L.js → chunk-AQBREB5O.js} +1 -1
  43. package/dist/{chunk-DSNG6WLU.js → chunk-AYVJXDLB.js} +1 -4
  44. package/dist/{chunk-6CMVBTTP.js → chunk-DK2ODBNT.js} +19 -9
  45. package/dist/chunk-DSMLHYJ4.js +82 -0
  46. package/dist/{chunk-BRKJKB33.js → chunk-FYZVH3MC.js} +1 -1
  47. package/dist/{chunk-MVEE6HEC.js → chunk-GA23TRNR.js} +5 -7
  48. package/dist/chunk-HCCBDJLW.js +68 -0
  49. package/dist/{chunk-JRQVPFLF.js → chunk-HY3RIEZW.js} +1 -1
  50. package/dist/{chunk-OIRUO5P7.js → chunk-JJ6XD7NG.js} +152 -2
  51. package/dist/{_members/primitives/chunk-IDAL6G3Y.js → chunk-JQMPHKLU.js} +19 -27
  52. package/dist/{chunk-G3PBH53P.js → chunk-MBCXCJOE.js} +1 -1
  53. package/dist/{chunk-UEI3NLNK.js → chunk-MHOQTPOB.js} +1 -4
  54. package/dist/{chunk-37NJ27UU.js → chunk-OCFDUCF4.js} +3 -0
  55. package/dist/{chunk-WZTTZHNR.js → chunk-OLFOPQCA.js} +12 -9
  56. package/dist/{chunk-P43IE4WB.js → chunk-P727GZVO.js} +2 -4
  57. package/dist/{chunk-52AHXNKM.js → chunk-PDYO3DOJ.js} +5 -5
  58. package/dist/{chunk-S3P5BFFL.js → chunk-PMY24FUD.js} +2 -4
  59. package/dist/{chunk-ATAF24QG.js → chunk-PODIYN2K.js} +10 -3
  60. package/dist/chunk-RF7U3SCL.js +606 -0
  61. package/dist/{chunk-JD77Y2WM.js → chunk-SW336CJP.js} +1 -4
  62. package/dist/{chunk-TULRCY6U.js → chunk-TOJEXFXL.js} +1 -1
  63. package/dist/{chunk-ELLSET2N.js → chunk-UHGSZZDI.js} +3 -6
  64. package/dist/{chunk-M3I5LMAB.js → chunk-UY4SWJVE.js} +1 -1
  65. package/dist/{chunk-6QJ3V3VS.js → chunk-YX2GSJK7.js} +1 -1
  66. package/dist/chunk-ZT7MHRQU.js +104 -0
  67. package/dist/{chunk-NV4I6GJV.js → chunk-ZWMV6DD2.js} +27 -4
  68. package/dist/cloud-import/multipart.d.ts +1 -0
  69. package/dist/cloud-import/multipart.js +8 -0
  70. package/dist/cloud-import.d.ts +1 -0
  71. package/dist/cloud-import.js +234 -0
  72. package/dist/compose/renderer.js +19 -22
  73. package/dist/compose.js +19 -22
  74. package/dist/composition/graphics-plan.js +3 -3
  75. package/dist/composition/ops.js +4 -4
  76. package/dist/composition/primitive-catalog.js +1 -1
  77. package/dist/composition/projection.js +21 -5
  78. package/dist/composition/validators.js +6 -4
  79. package/dist/composition-ops.js +15 -13
  80. package/dist/composition.js +26 -8
  81. package/dist/{context-CEAKQ5T7.js → context-YWUZDG5X.js} +5 -5
  82. package/dist/convex-api/dataModel.d.ts +1 -0
  83. package/dist/convex-api/dataModel.js +0 -0
  84. package/dist/convex-api.d.ts +1 -0
  85. package/dist/convex-api.js +8 -0
  86. package/dist/core/render.js +3 -3
  87. package/dist/core/select.js +2 -2
  88. package/dist/core.js +3 -3
  89. package/dist/errors.js +1 -1
  90. package/dist/mcp/adapter.js +2 -5
  91. package/dist/mcp/server.js +1 -2
  92. package/dist/mcp.js +2 -95
  93. package/dist/media-model/media-kind.js +9 -98
  94. package/dist/media-model/testing.js +1071 -718
  95. package/dist/nle-export/server.js +328 -130
  96. package/dist/nle-export/xml.js +5 -22799
  97. package/dist/nle-export.js +20 -22
  98. package/dist/primitives/backgrounds.js +2 -3
  99. package/dist/primitives/captions.js +4 -243
  100. package/dist/primitives/effects.js +2 -3
  101. package/dist/primitives/hero-text.js +2 -3
  102. package/dist/primitives/layouts.js +2 -3
  103. package/dist/primitives/lib/index.js +8 -10
  104. package/dist/primitives/lib/preview.js +1 -2
  105. package/dist/primitives/lib/schema.js +1 -2
  106. package/dist/primitives/lib/text/fitText.js +1 -2
  107. package/dist/primitives/lib.js +8 -10
  108. package/dist/primitives/scenes.js +1 -2
  109. package/dist/primitives/text.js +2 -3
  110. package/dist/primitives/ui-blocks.js +4 -5
  111. package/dist/primitives.js +19 -21
  112. package/package.json +125 -16
  113. package/dist/TextureLoader-UQOFUSAP.js +0 -422
  114. package/dist/VideoTexture-AQWSPIJG.js +0 -62
  115. package/dist/_members/account-model/index.js +0 -4
  116. package/dist/_members/account-model/testing/conversationStoreContract.js +0 -168
  117. package/dist/_members/account-model/testing/index.js +0 -7
  118. package/dist/_members/account-model/testing/restorePointStoreContract.js +0 -69
  119. package/dist/_members/account-model/types/index.js +0 -1
  120. package/dist/_members/account-model/validators/contextFile.js +0 -18
  121. package/dist/_members/account-model/validators/conversation.js +0 -95
  122. package/dist/_members/account-model/validators/dashboardInsight.js +0 -16
  123. package/dist/_members/account-model/validators/index.js +0 -7
  124. package/dist/_members/account-model/validators/sessionToken.js +0 -49
  125. package/dist/_members/account-model/validators/uploadToken.js +0 -16
  126. package/dist/_members/account-model/validators/userSettings.js +0 -12
  127. package/dist/_members/account-model/validators/workingComposition.js +0 -20
  128. package/dist/_members/brand-derivation/constants.js +0 -20
  129. package/dist/_members/brand-derivation/contrastSafe.js +0 -114
  130. package/dist/_members/brand-derivation/index.js +0 -1
  131. package/dist/_members/composition/audio/audioMix.js +0 -61
  132. package/dist/_members/composition/audio/index.js +0 -5
  133. package/dist/_members/composition/audio/mixStaging.js +0 -195
  134. package/dist/_members/composition/audio/musicPack.generated.js +0 -136
  135. package/dist/_members/composition/audio/musicPack.js +0 -36
  136. package/dist/_members/composition/audio/pack.generated.js +0 -603
  137. package/dist/_members/composition/audio/pack.js +0 -48
  138. package/dist/_members/composition/audio/palette.js +0 -134
  139. package/dist/_members/composition/autozoom/index.js +0 -83
  140. package/dist/_members/composition/brand-kit.js +0 -45
  141. package/dist/_members/composition/brief/contract.js +0 -209
  142. package/dist/_members/composition/color-grade.js +0 -80
  143. package/dist/_members/composition/depth.js +0 -8
  144. package/dist/_members/composition/fixtures/index.js +0 -143
  145. package/dist/_members/composition/fixtures/vaayaErrored.d.ts +0 -25
  146. package/dist/_members/composition/fixtures/vaayaErrored.js +0 -203
  147. package/dist/_members/composition/fonts.js +0 -162
  148. package/dist/_members/composition/graphics-plan/compile.js +0 -221
  149. package/dist/_members/composition/graphics-plan/index.js +0 -10
  150. package/dist/_members/composition/graphics-plan/instantiateMotif.js +0 -44
  151. package/dist/_members/composition/graphics-plan/motion.js +0 -66
  152. package/dist/_members/composition/graphics-plan/schemas.js +0 -261
  153. package/dist/_members/composition/graphics-plan/solve.js +0 -145
  154. package/dist/_members/composition/index.js +0 -5
  155. package/dist/_members/composition/invariants/clipPlacement.js +0 -69
  156. package/dist/_members/composition/invariants/composition.js +0 -28
  157. package/dist/_members/composition/invariants/errors.js +0 -10
  158. package/dist/_members/composition/invariants/etag.js +0 -38
  159. package/dist/_members/composition/invariants/ids.js +0 -33
  160. package/dist/_members/composition/invariants/index.js +0 -9
  161. package/dist/_members/composition/invariants/keyframes.js +0 -45
  162. package/dist/_members/composition/invariants/markers.js +0 -29
  163. package/dist/_members/composition/invariants/time.js +0 -20
  164. package/dist/_members/composition/invariants/tracks.js +0 -304
  165. package/dist/_members/composition/ops/compositionOps.js +0 -1056
  166. package/dist/_members/composition/ops/headlessStore.js +0 -94
  167. package/dist/_members/composition/ops/index.js +0 -4
  168. package/dist/_members/composition/ops/selectors.js +0 -118
  169. package/dist/_members/composition/ops/timeline-word.js +0 -1
  170. package/dist/_members/composition/ops/transcript.js +0 -77
  171. package/dist/_members/composition/ops/types.js +0 -16
  172. package/dist/_members/composition/primitive-catalog/catalogQuery.js +0 -150
  173. package/dist/_members/composition/primitive-catalog/disabled.js +0 -32
  174. package/dist/_members/composition/primitive-catalog/generated/meta.js +0 -15161
  175. package/dist/_members/composition/primitive-catalog/index.js +0 -46
  176. package/dist/_members/composition/primitive-catalog/paramValidation.js +0 -231
  177. package/dist/_members/composition/primitive-catalog/projection.js +0 -164
  178. package/dist/_members/composition/primitive-catalog/types.js +0 -14
  179. package/dist/_members/composition/projection/behind-placement.js +0 -62
  180. package/dist/_members/composition/projection/brandKit.js +0 -482
  181. package/dist/_members/composition/projection/cardTokens.js +0 -209
  182. package/dist/_members/composition/projection/composition-floor.js +0 -582
  183. package/dist/_members/composition/projection/cropProjection.js +0 -257
  184. package/dist/_members/composition/projection/index.js +0 -7
  185. package/dist/_members/composition/projection/occlusion-budget.js +0 -104
  186. package/dist/_members/composition/projection/safe-zones.js +0 -99
  187. package/dist/_members/composition/reframe/aspectLoss.js +0 -115
  188. package/dist/_members/composition/reframe/coverage.js +0 -62
  189. package/dist/_members/composition/reframe/derive.js +0 -73
  190. package/dist/_members/composition/reframe/index.js +0 -109
  191. package/dist/_members/composition/reframe/kenBurns.js +0 -64
  192. package/dist/_members/composition/reframe/shotScale.js +0 -176
  193. package/dist/_members/composition/reframe/trajectory.js +0 -124
  194. package/dist/_members/composition/timeline/compound.js +0 -134
  195. package/dist/_members/composition/timeline/index.js +0 -9
  196. package/dist/_members/composition/timeline/intent.js +0 -228
  197. package/dist/_members/composition/timeline/keyframes.js +0 -121
  198. package/dist/_members/composition/timeline/link.js +0 -59
  199. package/dist/_members/composition/timeline/occupancy.js +0 -36
  200. package/dist/_members/composition/timeline/placement.js +0 -74
  201. package/dist/_members/composition/timeline/plan.js +0 -31
  202. package/dist/_members/composition/timeline/resolve.js +0 -170
  203. package/dist/_members/composition/timeline/trims.js +0 -278
  204. package/dist/_members/composition/types/index.js +0 -1
  205. package/dist/_members/composition/validators/brandKit.js +0 -295
  206. package/dist/_members/composition/validators/composePlan.js +0 -113
  207. package/dist/_members/composition/validators/composition.js +0 -703
  208. package/dist/_members/composition/validators/font.js +0 -34
  209. package/dist/_members/composition/validators/graphicKinds.js +0 -30
  210. package/dist/_members/composition/validators/index.js +0 -9
  211. package/dist/_members/composition/validators/project.js +0 -29
  212. package/dist/_members/composition/validators/registry.js +0 -41
  213. package/dist/_members/composition/validators/render.js +0 -139
  214. package/dist/_members/composition/validators/session.js +0 -37
  215. package/dist/_members/composition/validators/webhook.js +0 -72
  216. package/dist/_members/composition-ops/alphaLayers.js +0 -141
  217. package/dist/_members/composition-ops/index.js +0 -637
  218. package/dist/_members/composition-ops/materializeGrid.js +0 -99
  219. package/dist/_members/composition-ops/opRecorder.js +0 -196
  220. package/dist/_members/composition-ops/recordingStore.js +0 -14
  221. package/dist/_members/composition-ops/replaceRegion.js +0 -102
  222. package/dist/_members/composition-ops/testFixtures.js +0 -19
  223. package/dist/_members/core/index.js +0 -5
  224. package/dist/_members/core/render/bookends.js +0 -53
  225. package/dist/_members/core/render/captions.js +0 -127
  226. package/dist/_members/core/render/compositionRender.js +0 -1249
  227. package/dist/_members/core/render/deriveTrajectory.js +0 -889
  228. package/dist/_members/core/render/emphasis.js +0 -16
  229. package/dist/_members/core/render/eval/cropBox.js +0 -139
  230. package/dist/_members/core/render/eval/inclusion.js +0 -96
  231. package/dist/_members/core/render/eval/index.js +0 -146
  232. package/dist/_members/core/render/eval/metrics.js +0 -94
  233. package/dist/_members/core/render/exportSettings.js +0 -65
  234. package/dist/_members/core/render/index.js +0 -20
  235. package/dist/_members/core/render/mapFaceToPerson.js +0 -73
  236. package/dist/_members/core/render/types.js +0 -8
  237. package/dist/_members/core/render/vcam/cameraPath.js +0 -248
  238. package/dist/_members/core/render/vcam/constants.js +0 -115
  239. package/dist/_members/core/render/vcam/errorCodes.js +0 -39
  240. package/dist/_members/core/render/vcam/framing.js +0 -136
  241. package/dist/_members/core/render/vcam/requiredRegion.js +0 -137
  242. package/dist/_members/core/render/vcam/shots.js +0 -53
  243. package/dist/_members/core/render/vcam/subjectSet.js +0 -388
  244. package/dist/_members/core/select/errorCodes.js +0 -38
  245. package/dist/_members/core/select/index.js +0 -26
  246. package/dist/_members/core/select/model.js +0 -18
  247. package/dist/_members/core/select/select.js +0 -244
  248. package/dist/_members/core/select/stabilize.js +0 -242
  249. package/dist/_members/core/types.js +0 -7
  250. package/dist/_members/errors/index.js +0 -1
  251. package/dist/_members/errors/registry.js +0 -560
  252. package/dist/_members/foundation/codes/index.js +0 -31
  253. package/dist/_members/foundation/index.js +0 -2
  254. package/dist/_members/foundation/primitives/index.js +0 -5
  255. package/dist/_members/mcp/adapter.js +0 -771
  256. package/dist/_members/mcp/burnedNames.js +0 -73
  257. package/dist/_members/mcp/core.js +0 -390
  258. package/dist/_members/mcp/curation.js +0 -792
  259. package/dist/_members/mcp/executor.js +0 -142
  260. package/dist/_members/mcp/format.js +0 -9
  261. package/dist/_members/mcp/generated/catalogPreviews.js +0 -95
  262. package/dist/_members/mcp/generated/harness.js +0 -81
  263. package/dist/_members/mcp/generated/operations.js +0 -131
  264. package/dist/_members/mcp/index.js +0 -50
  265. package/dist/_members/mcp/internalLoopTools.js +0 -109
  266. package/dist/_members/mcp/prompts.js +0 -45
  267. package/dist/_members/mcp/resources.js +0 -166
  268. package/dist/_members/mcp/server.js +0 -340
  269. package/dist/_members/mcp/wait.js +0 -378
  270. package/dist/_members/mcp/x402Meta.js +0 -66
  271. package/dist/_members/media-model/api.js +0 -175
  272. package/dist/_members/media-model/index.js +0 -1
  273. package/dist/_members/media-model/media-kind.js +0 -116
  274. package/dist/_members/media-model/testing/index.js +0 -1
  275. package/dist/_members/media-model/testing/mediaStoreContract.js +0 -82
  276. package/dist/_members/media-model/transcriptSearch.js +0 -70
  277. package/dist/_members/media-model/transcriptSearchCases.json +0 -79
  278. package/dist/_members/nle-export/compact-timeline.js +0 -73
  279. package/dist/_members/nle-export/compact-timeline.js.map +0 -1
  280. package/dist/_members/nle-export/composition-to-input.js +0 -147
  281. package/dist/_members/nle-export/composition-to-input.js.map +0 -1
  282. package/dist/_members/nle-export/fcpxml.js +0 -159
  283. package/dist/_members/nle-export/fcpxml.js.map +0 -1
  284. package/dist/_members/nle-export/index.js +0 -12
  285. package/dist/_members/nle-export/index.js.map +0 -1
  286. package/dist/_members/nle-export/premiere.js +0 -161
  287. package/dist/_members/nle-export/premiere.js.map +0 -1
  288. package/dist/_members/nle-export/server/index.js +0 -2
  289. package/dist/_members/nle-export/server/index.js.map +0 -1
  290. package/dist/_members/nle-export/server/pack-zip.js +0 -38
  291. package/dist/_members/nle-export/server/pack-zip.js.map +0 -1
  292. package/dist/_members/nle-export/srt.js +0 -50
  293. package/dist/_members/nle-export/srt.js.map +0 -1
  294. package/dist/_members/nle-export/types.js +0 -9
  295. package/dist/_members/nle-export/types.js.map +0 -1
  296. package/dist/_members/nle-export/xml/index.js +0 -11
  297. package/dist/_members/nle-export/xml/index.js.map +0 -1
  298. package/dist/_members/nle-export/xml-utils.js +0 -48
  299. package/dist/_members/nle-export/xml-utils.js.map +0 -1
  300. package/dist/_members/perception/activeSpeaker.js +0 -103
  301. package/dist/_members/perception/audioQuality.js +0 -76
  302. package/dist/_members/perception/energyBeat.js +0 -99
  303. package/dist/_members/perception/identityMatch.js +0 -91
  304. package/dist/_members/perception/index.js +0 -48
  305. package/dist/_members/perception/visualQuality.js +0 -95
  306. package/dist/_members/plane/conformance.js +0 -90
  307. package/dist/_members/plane/contract.js +0 -49
  308. package/dist/_members/plane/index.js +0 -16
  309. package/dist/_members/primitives/backgrounds/index.js +0 -32
  310. package/dist/_members/primitives/backgrounds/index.js.map +0 -1
  311. package/dist/_members/primitives/captions/index.js +0 -398
  312. package/dist/_members/primitives/captions/index.js.map +0 -1
  313. package/dist/_members/primitives/chunk-2LVE4UIT.js +0 -139
  314. package/dist/_members/primitives/chunk-2LVE4UIT.js.map +0 -1
  315. package/dist/_members/primitives/chunk-3IQUH6KK.js +0 -20
  316. package/dist/_members/primitives/chunk-3IQUH6KK.js.map +0 -1
  317. package/dist/_members/primitives/chunk-3OMURV6Q.js +0 -112
  318. package/dist/_members/primitives/chunk-3OMURV6Q.js.map +0 -1
  319. package/dist/_members/primitives/chunk-4IS6TMEG.js +0 -21
  320. package/dist/_members/primitives/chunk-4IS6TMEG.js.map +0 -1
  321. package/dist/_members/primitives/chunk-5MWGAEGQ.js +0 -1644
  322. package/dist/_members/primitives/chunk-5MWGAEGQ.js.map +0 -1
  323. package/dist/_members/primitives/chunk-7RRPFPQK.js +0 -15
  324. package/dist/_members/primitives/chunk-7RRPFPQK.js.map +0 -1
  325. package/dist/_members/primitives/chunk-DH5TRZK2.js +0 -125
  326. package/dist/_members/primitives/chunk-DH5TRZK2.js.map +0 -1
  327. package/dist/_members/primitives/chunk-E3KNUSFG.js +0 -2337
  328. package/dist/_members/primitives/chunk-E3KNUSFG.js.map +0 -1
  329. package/dist/_members/primitives/chunk-G2B3G4HK.js +0 -47
  330. package/dist/_members/primitives/chunk-G2B3G4HK.js.map +0 -1
  331. package/dist/_members/primitives/chunk-HFPFGZXT.js +0 -1494
  332. package/dist/_members/primitives/chunk-HFPFGZXT.js.map +0 -1
  333. package/dist/_members/primitives/chunk-HIWVFZVH.js +0 -19
  334. package/dist/_members/primitives/chunk-HIWVFZVH.js.map +0 -1
  335. package/dist/_members/primitives/chunk-IDAL6G3Y.js.map +0 -1
  336. package/dist/_members/primitives/chunk-KNC6JP5F.js +0 -34
  337. package/dist/_members/primitives/chunk-KNC6JP5F.js.map +0 -1
  338. package/dist/_members/primitives/chunk-KYRDVZST.js +0 -459
  339. package/dist/_members/primitives/chunk-KYRDVZST.js.map +0 -1
  340. package/dist/_members/primitives/chunk-LWLHS2NS.js +0 -3410
  341. package/dist/_members/primitives/chunk-LWLHS2NS.js.map +0 -1
  342. package/dist/_members/primitives/chunk-QAQ3P7DR.js +0 -8855
  343. package/dist/_members/primitives/chunk-QAQ3P7DR.js.map +0 -1
  344. package/dist/_members/primitives/chunk-ROV2ODWC.js +0 -81
  345. package/dist/_members/primitives/chunk-ROV2ODWC.js.map +0 -1
  346. package/dist/_members/primitives/chunk-TCRC2FH3.js +0 -183
  347. package/dist/_members/primitives/chunk-TCRC2FH3.js.map +0 -1
  348. package/dist/_members/primitives/chunk-US4YEDAA.js +0 -96
  349. package/dist/_members/primitives/chunk-US4YEDAA.js.map +0 -1
  350. package/dist/_members/primitives/chunk-UVKRO5ER.js +0 -13
  351. package/dist/_members/primitives/chunk-UVKRO5ER.js.map +0 -1
  352. package/dist/_members/primitives/chunk-W4EIIF2I.js +0 -10
  353. package/dist/_members/primitives/chunk-W4EIIF2I.js.map +0 -1
  354. package/dist/_members/primitives/chunk-WPGKIPCO.js +0 -3563
  355. package/dist/_members/primitives/chunk-WPGKIPCO.js.map +0 -1
  356. package/dist/_members/primitives/chunk-WZFLEGMD.js +0 -1435
  357. package/dist/_members/primitives/chunk-WZFLEGMD.js.map +0 -1
  358. package/dist/_members/primitives/chunk-XHU3WBEI.js +0 -33
  359. package/dist/_members/primitives/chunk-XHU3WBEI.js.map +0 -1
  360. package/dist/_members/primitives/chunk-YN7WTZZ7.js +0 -46
  361. package/dist/_members/primitives/chunk-YN7WTZZ7.js.map +0 -1
  362. package/dist/_members/primitives/effects/index.js +0 -30
  363. package/dist/_members/primitives/effects/index.js.map +0 -1
  364. package/dist/_members/primitives/hero-text/index.js +0 -14
  365. package/dist/_members/primitives/hero-text/index.js.map +0 -1
  366. package/dist/_members/primitives/index.js +0 -64
  367. package/dist/_members/primitives/index.js.map +0 -1
  368. package/dist/_members/primitives/layouts/index.js +0 -24
  369. package/dist/_members/primitives/layouts/index.js.map +0 -1
  370. package/dist/_members/primitives/lib/easings.js +0 -26
  371. package/dist/_members/primitives/lib/easings.js.map +0 -1
  372. package/dist/_members/primitives/lib/index.js +0 -74
  373. package/dist/_members/primitives/lib/index.js.map +0 -1
  374. package/dist/_members/primitives/lib/palette.js +0 -72
  375. package/dist/_members/primitives/lib/palette.js.map +0 -1
  376. package/dist/_members/primitives/lib/preview.js +0 -8
  377. package/dist/_members/primitives/lib/preview.js.map +0 -1
  378. package/dist/_members/primitives/lib/schema.js +0 -12
  379. package/dist/_members/primitives/lib/schema.js.map +0 -1
  380. package/dist/_members/primitives/lib/seeded-random.js +0 -14
  381. package/dist/_members/primitives/lib/seeded-random.js.map +0 -1
  382. package/dist/_members/primitives/lib/text/contrast.js +0 -12
  383. package/dist/_members/primitives/lib/text/contrast.js.map +0 -1
  384. package/dist/_members/primitives/lib/text/fill.js +0 -8
  385. package/dist/_members/primitives/lib/text/fill.js.map +0 -1
  386. package/dist/_members/primitives/lib/text/fitText.js +0 -10
  387. package/dist/_members/primitives/lib/text/fitText.js.map +0 -1
  388. package/dist/_members/primitives/lib/text/marker.js +0 -8
  389. package/dist/_members/primitives/lib/text/marker.js.map +0 -1
  390. package/dist/_members/primitives/lib/text/motion.js +0 -16
  391. package/dist/_members/primitives/lib/text/motion.js.map +0 -1
  392. package/dist/_members/primitives/lib/text/recolor.js +0 -8
  393. package/dist/_members/primitives/lib/text/recolor.js.map +0 -1
  394. package/dist/_members/primitives/lib/text/spec.js +0 -1
  395. package/dist/_members/primitives/lib/text/spec.js.map +0 -1
  396. package/dist/_members/primitives/lib/text/stage.js +0 -8
  397. package/dist/_members/primitives/lib/text/stage.js.map +0 -1
  398. package/dist/_members/primitives/lib/text/typeface.js +0 -8
  399. package/dist/_members/primitives/lib/text/typeface.js.map +0 -1
  400. package/dist/_members/primitives/lib/tokens.js +0 -24
  401. package/dist/_members/primitives/lib/tokens.js.map +0 -1
  402. package/dist/_members/primitives/lib/types.js +0 -1
  403. package/dist/_members/primitives/lib/types.js.map +0 -1
  404. package/dist/_members/primitives/params-required.json +0 -153
  405. package/dist/_members/primitives/scenes/index.js +0 -25
  406. package/dist/_members/primitives/scenes/index.js.map +0 -1
  407. package/dist/_members/primitives/subject-foreground/index.js +0 -30
  408. package/dist/_members/primitives/subject-foreground/index.js.map +0 -1
  409. package/dist/_members/primitives/text/index.js +0 -57
  410. package/dist/_members/primitives/text/index.js.map +0 -1
  411. package/dist/_members/primitives/transitions/index.js +0 -67
  412. package/dist/_members/primitives/transitions/index.js.map +0 -1
  413. package/dist/_members/primitives/ui-blocks/index.js +0 -76
  414. package/dist/_members/primitives/ui-blocks/index.js.map +0 -1
  415. package/dist/_members/primitives/version-map.json +0 -105
  416. package/dist/_members/primitives/workspace.js +0 -60
  417. package/dist/_members/primitives/workspace.js.map +0 -1
  418. package/dist/chunk-7GISRVON.js +0 -14176
  419. package/dist/chunk-DIBOJJMU.js +0 -16838
  420. package/dist/chunk-EAUSEGB7.js +0 -420
  421. package/dist/chunk-FUWJOVVK.js +0 -3633
  422. package/dist/chunk-G75E7YA4.js +0 -11883
  423. package/dist/chunk-JCZQT7K3.js +0 -3266
  424. package/dist/chunk-KF5ETMKB.js +0 -544
  425. package/dist/chunk-NDKERSXY.js +0 -1296
  426. package/dist/chunk-V43Y7IE4.js +0 -3621
  427. package/dist/chunk-VIVQHIGZ.js +0 -4319
  428. package/dist/chunk-YA3OR2KK.js +0 -249
  429. package/dist/hls-HD4C5G6W.js +0 -33000
  430. package/dist/token-RGFIT24D.js +0 -69
  431. package/dist/token-util-GPLSGYVO.js +0 -5
  432. package/dist/vision_bundle-5Y376MAR.js +0 -4084
@@ -1,1644 +0,0 @@
1
- import {
2
- FrostedGlassWipe,
3
- SpatialPush,
4
- frostedGlassWipe,
5
- spatialPush
6
- } from "./chunk-US4YEDAA.js";
7
- import {
8
- ACCENT,
9
- BG,
10
- BG_DEEP,
11
- BORDER,
12
- DANGER,
13
- TEXT,
14
- TEXT_HI,
15
- TEXT_MUTED,
16
- VIOLET,
17
- WARNING
18
- } from "./chunk-3OMURV6Q.js";
19
-
20
- // src/transitions/light-leak/index.tsx
21
- import { useMemo } from "react";
22
- import { AbsoluteFill, interpolate } from "remotion";
23
- import { jsx, jsxs } from "react/jsx-runtime";
24
- var LightLeakPresentation = ({ children, presentationDirection, presentationProgress, passedProps }) => {
25
- const { hue = 30 } = passedProps;
26
- const isEntering = presentationDirection === "entering";
27
- const style = useMemo(() => {
28
- if (isEntering) {
29
- const opacity2 = interpolate(presentationProgress, [0, 0.4, 1], [0, 0, 1], {
30
- extrapolateLeft: "clamp",
31
- extrapolateRight: "clamp"
32
- });
33
- return { opacity: opacity2 };
34
- }
35
- const opacity = interpolate(presentationProgress, [0, 0.6, 1], [1, 0, 0], {
36
- extrapolateLeft: "clamp",
37
- extrapolateRight: "clamp"
38
- });
39
- return { opacity };
40
- }, [isEntering, presentationProgress]);
41
- const leakOpacity = interpolate(
42
- presentationProgress,
43
- [0, 0.3, 0.5, 0.7, 1],
44
- [0, 0.8, 1, 0.8, 0],
45
- { extrapolateLeft: "clamp", extrapolateRight: "clamp" }
46
- );
47
- return /* @__PURE__ */ jsxs(AbsoluteFill, { children: [
48
- /* @__PURE__ */ jsx(AbsoluteFill, { style, children }),
49
- isEntering && /* @__PURE__ */ jsx(
50
- AbsoluteFill,
51
- {
52
- style: {
53
- background: `linear-gradient(
54
- 135deg,
55
- hsla(${hue}, 100%, 70%, ${leakOpacity * 0.9}),
56
- hsla(${hue + 40}, 100%, 80%, ${leakOpacity * 0.6}),
57
- hsla(${hue + 80}, 100%, 60%, ${leakOpacity * 0.3})
58
- )`,
59
- mixBlendMode: "screen",
60
- pointerEvents: "none"
61
- }
62
- }
63
- )
64
- ] });
65
- };
66
- var lightLeak = (props) => ({
67
- component: LightLeakPresentation,
68
- props: props ?? {}
69
- });
70
- var LightLeak = LightLeakPresentation;
71
-
72
- // src/transitions/ink-wipe/index.tsx
73
- import { useMemo as useMemo2 } from "react";
74
- import { AbsoluteFill as AbsoluteFill2, interpolate as interpolate2 } from "remotion";
75
- import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
76
- var InkWipePresentation = ({ children, presentationDirection, presentationProgress, passedProps }) => {
77
- const { direction = "left", color = "black" } = passedProps;
78
- const isEntering = presentationDirection === "entering";
79
- const clipPath = useMemo2(() => {
80
- const p = presentationProgress;
81
- if (isEntering) {
82
- switch (direction) {
83
- case "left":
84
- return `inset(0 ${interpolate2(p, [0, 1], [100, 0])}% 0 0)`;
85
- case "right":
86
- return `inset(0 0 0 ${interpolate2(p, [0, 1], [100, 0])}%)`;
87
- case "up":
88
- return `inset(0 0 ${interpolate2(p, [0, 1], [100, 0])}% 0)`;
89
- case "down":
90
- return `inset(${interpolate2(p, [0, 1], [100, 0])}% 0 0 0)`;
91
- }
92
- } else {
93
- switch (direction) {
94
- case "left":
95
- return `inset(0 0 0 ${interpolate2(p, [0, 1], [0, 100])}%)`;
96
- case "right":
97
- return `inset(0 ${interpolate2(p, [0, 1], [0, 100])}% 0 0)`;
98
- case "up":
99
- return `inset(${interpolate2(p, [0, 1], [0, 100])}% 0 0 0)`;
100
- case "down":
101
- return `inset(0 0 ${interpolate2(p, [0, 1], [0, 100])}% 0)`;
102
- }
103
- }
104
- }, [direction, isEntering, presentationProgress]);
105
- const style = useMemo2(
106
- () => ({ clipPath }),
107
- [clipPath]
108
- );
109
- const edgeOpacity = interpolate2(
110
- presentationProgress,
111
- [0, 0.1, 0.9, 1],
112
- [0, 1, 1, 0],
113
- { extrapolateLeft: "clamp", extrapolateRight: "clamp" }
114
- );
115
- const edgeStyle = useMemo2(() => {
116
- const base = {
117
- position: "absolute",
118
- backgroundColor: color,
119
- opacity: edgeOpacity,
120
- pointerEvents: "none"
121
- };
122
- const pos = `${presentationProgress * 100}%`;
123
- switch (direction) {
124
- case "left":
125
- return { ...base, top: 0, bottom: 0, right: pos, width: 4 };
126
- case "right":
127
- return { ...base, top: 0, bottom: 0, left: pos, width: 4 };
128
- case "up":
129
- return { ...base, left: 0, right: 0, bottom: pos, height: 4 };
130
- case "down":
131
- return { ...base, left: 0, right: 0, top: pos, height: 4 };
132
- }
133
- }, [color, direction, edgeOpacity, presentationProgress]);
134
- return /* @__PURE__ */ jsxs2(AbsoluteFill2, { children: [
135
- /* @__PURE__ */ jsx2(AbsoluteFill2, { style, children }),
136
- isEntering && /* @__PURE__ */ jsx2("div", { style: edgeStyle })
137
- ] });
138
- };
139
- var inkWipe = (props) => ({
140
- component: InkWipePresentation,
141
- props: props ?? {}
142
- });
143
- var InkWipe = InkWipePresentation;
144
-
145
- // src/transitions/luma-matte/index.tsx
146
- import { useMemo as useMemo3 } from "react";
147
- import { AbsoluteFill as AbsoluteFill3, interpolate as interpolate3 } from "remotion";
148
- import { jsx as jsx3 } from "react/jsx-runtime";
149
- var LumaMattePresentation = ({ children, presentationDirection, presentationProgress, passedProps }) => {
150
- const { matte = "smoke" } = passedProps;
151
- const isEntering = presentationDirection === "entering";
152
- const style = useMemo3(() => {
153
- const sweepPos = interpolate3(presentationProgress, [0, 1], [-20, 120], {
154
- extrapolateLeft: "clamp",
155
- extrapolateRight: "clamp"
156
- });
157
- let softness;
158
- let gradientAngle;
159
- switch (matte) {
160
- case "smoke":
161
- softness = 30;
162
- gradientAngle = "to right";
163
- break;
164
- case "brush":
165
- softness = 15;
166
- gradientAngle = "135deg";
167
- break;
168
- case "geometric":
169
- softness = 5;
170
- gradientAngle = "to right";
171
- break;
172
- }
173
- const maskStart = sweepPos - softness;
174
- const maskEnd = sweepPos + softness;
175
- if (isEntering) {
176
- return {
177
- maskImage: `linear-gradient(${gradientAngle}, transparent ${maskStart}%, black ${maskEnd}%)`,
178
- WebkitMaskImage: `linear-gradient(${gradientAngle}, transparent ${maskStart}%, black ${maskEnd}%)`
179
- };
180
- }
181
- return {
182
- maskImage: `linear-gradient(${gradientAngle}, black ${maskStart}%, transparent ${maskEnd}%)`,
183
- WebkitMaskImage: `linear-gradient(${gradientAngle}, black ${maskStart}%, transparent ${maskEnd}%)`
184
- };
185
- }, [isEntering, matte, presentationProgress]);
186
- return /* @__PURE__ */ jsx3(AbsoluteFill3, { style, children });
187
- };
188
- var lumaMatte = (props) => ({
189
- component: LumaMattePresentation,
190
- props: props ?? {}
191
- });
192
- var LumaMatte = LumaMattePresentation;
193
-
194
- // src/transitions/glitch-cut/index.tsx
195
- import { useMemo as useMemo4 } from "react";
196
- import { AbsoluteFill as AbsoluteFill4, interpolate as interpolate4 } from "remotion";
197
- import { jsx as jsx4 } from "react/jsx-runtime";
198
- var GlitchCutPresentation = ({ children, presentationDirection, presentationProgress, passedProps }) => {
199
- const { intensity = 0.5, slices = 5 } = passedProps;
200
- const isEntering = presentationDirection === "entering";
201
- const glitchAmount = interpolate4(
202
- presentationProgress,
203
- [0, 0.3, 0.5, 0.7, 1],
204
- [0, 1, 1, 1, 0],
205
- { extrapolateLeft: "clamp", extrapolateRight: "clamp" }
206
- );
207
- const maxShift = intensity * 20;
208
- const style = useMemo4(() => {
209
- const shift = glitchAmount * maxShift;
210
- const filter = shift > 0.5 ? `drop-shadow(${shift}px 0 0 rgba(255,0,0,0.5)) drop-shadow(${-shift}px 0 0 rgba(0,255,255,0.5))` : "none";
211
- let opacity;
212
- if (isEntering) {
213
- opacity = interpolate4(presentationProgress, [0, 0.45, 0.55, 1], [0, 0, 1, 1], {
214
- extrapolateLeft: "clamp",
215
- extrapolateRight: "clamp"
216
- });
217
- } else {
218
- opacity = interpolate4(presentationProgress, [0, 0.45, 0.55, 1], [1, 1, 0, 0], {
219
- extrapolateLeft: "clamp",
220
- extrapolateRight: "clamp"
221
- });
222
- }
223
- const sliceOffset = glitchAmount > 0 ? `translateX(${Math.sin(presentationProgress * slices * Math.PI) * shift * 0.5}px)` : "none";
224
- return {
225
- filter,
226
- opacity,
227
- transform: sliceOffset
228
- };
229
- }, [glitchAmount, isEntering, maxShift, presentationProgress, slices]);
230
- return /* @__PURE__ */ jsx4(AbsoluteFill4, { style, children });
231
- };
232
- var glitchCut = (props) => ({
233
- component: GlitchCutPresentation,
234
- props: props ?? {}
235
- });
236
- var GlitchCut = GlitchCutPresentation;
237
-
238
- // src/transitions/zoom-through/index.tsx
239
- import { useMemo as useMemo5 } from "react";
240
- import { AbsoluteFill as AbsoluteFill5, interpolate as interpolate5 } from "remotion";
241
- import { jsx as jsx5 } from "react/jsx-runtime";
242
- var ZoomThroughPresentation = ({ children, presentationDirection, presentationProgress, passedProps }) => {
243
- const { zoomPoint = { x: 0.5, y: 0.5 } } = passedProps;
244
- const isEntering = presentationDirection === "entering";
245
- const style = useMemo5(() => {
246
- const originX = `${zoomPoint.x * 100}%`;
247
- const originY = `${zoomPoint.y * 100}%`;
248
- if (isEntering) {
249
- const scale2 = interpolate5(presentationProgress, [0, 1], [3, 1], {
250
- extrapolateLeft: "clamp",
251
- extrapolateRight: "clamp"
252
- });
253
- const opacity2 = interpolate5(presentationProgress, [0, 0.3, 1], [0, 1, 1], {
254
- extrapolateLeft: "clamp",
255
- extrapolateRight: "clamp"
256
- });
257
- return {
258
- transform: `scale(${scale2})`,
259
- transformOrigin: `${originX} ${originY}`,
260
- opacity: opacity2
261
- };
262
- }
263
- const scale = interpolate5(presentationProgress, [0, 1], [1, 3], {
264
- extrapolateLeft: "clamp",
265
- extrapolateRight: "clamp"
266
- });
267
- const opacity = interpolate5(presentationProgress, [0, 0.7, 1], [1, 1, 0], {
268
- extrapolateLeft: "clamp",
269
- extrapolateRight: "clamp"
270
- });
271
- return {
272
- transform: `scale(${scale})`,
273
- transformOrigin: `${originX} ${originY}`,
274
- opacity
275
- };
276
- }, [isEntering, presentationProgress, zoomPoint]);
277
- return /* @__PURE__ */ jsx5(AbsoluteFill5, { style, children });
278
- };
279
- var zoomThrough = (props) => ({
280
- component: ZoomThroughPresentation,
281
- props: props ?? {}
282
- });
283
- var ZoomThrough = ZoomThroughPresentation;
284
-
285
- // src/transitions/morph/index.tsx
286
- import { useMemo as useMemo6 } from "react";
287
- import { AbsoluteFill as AbsoluteFill6, interpolate as interpolate6 } from "remotion";
288
- import { jsx as jsx6 } from "react/jsx-runtime";
289
- var MorphPresentation = ({ children, presentationDirection, presentationProgress, passedProps }) => {
290
- const { type = "dissolve" } = passedProps;
291
- const isEntering = presentationDirection === "entering";
292
- const style = useMemo6(() => {
293
- const opacity = isEntering ? presentationProgress : 1 - presentationProgress;
294
- if (type === "displacement") {
295
- const scale = isEntering ? interpolate6(presentationProgress, [0, 1], [1.05, 1], {
296
- extrapolateLeft: "clamp",
297
- extrapolateRight: "clamp"
298
- }) : interpolate6(presentationProgress, [0, 1], [1, 0.95], {
299
- extrapolateLeft: "clamp",
300
- extrapolateRight: "clamp"
301
- });
302
- return {
303
- opacity,
304
- transform: `scale(${scale})`
305
- };
306
- }
307
- return { opacity };
308
- }, [isEntering, presentationProgress, type]);
309
- return /* @__PURE__ */ jsx6(AbsoluteFill6, { style, children });
310
- };
311
- var morph = (props) => ({
312
- component: MorphPresentation,
313
- props: props ?? {}
314
- });
315
- var Morph = MorphPresentation;
316
-
317
- // src/transitions/chromatic-aberration-wipe/index.tsx
318
- import { Easing, interpolate as interpolate7 } from "remotion";
319
- import { jsx as jsx7 } from "react/jsx-runtime";
320
- var ChromaticAberrationWipePresentation = ({ children, presentationDirection, presentationProgress, passedProps }) => {
321
- const { direction = "left", aberrationOffset = 8 } = passedProps;
322
- const isEntering = presentationDirection === "entering";
323
- const p = interpolate7(presentationProgress, [0, 1], [0, 1], {
324
- easing: Easing.bezier(0.65, 0, 0.35, 1)
325
- });
326
- const sign = direction === "left" ? -1 : 1;
327
- const offset = isEntering ? (1 - p) * 100 * -sign : p * 100 * sign;
328
- const inPeak = presentationProgress > 0.25 && presentationProgress < 0.75;
329
- const filter = inPeak ? `drop-shadow(-${aberrationOffset}px 0 0 rgba(255,0,0,0.8)) drop-shadow(${aberrationOffset}px 0 0 rgba(0,255,255,0.8))` : "none";
330
- return /* @__PURE__ */ jsx7(
331
- "div",
332
- {
333
- style: {
334
- position: "absolute",
335
- inset: 0,
336
- overflow: "hidden",
337
- transform: `translateX(${offset}%)`,
338
- filter,
339
- willChange: "transform"
340
- },
341
- children
342
- }
343
- );
344
- };
345
- var chromaticAberrationWipe = (props) => ({
346
- component: ChromaticAberrationWipePresentation,
347
- props: props ?? {}
348
- });
349
- var ChromaticAberrationWipe = ChromaticAberrationWipePresentation;
350
-
351
- // src/transitions/directional-wipe/index.tsx
352
- import { Easing as Easing2, interpolate as interpolate8 } from "remotion";
353
- import { jsx as jsx8 } from "react/jsx-runtime";
354
- var DirectionalWipePresentation = ({ children, presentationDirection, presentationProgress, passedProps }) => {
355
- const { direction = "left" } = passedProps;
356
- const isEntering = presentationDirection === "entering";
357
- const p = interpolate8(presentationProgress, [0, 1], [0, 1], {
358
- easing: Easing2.bezier(0.65, 0, 0.35, 1)
359
- });
360
- const axis = direction === "left" || direction === "right" ? "x" : "y";
361
- const sign = direction === "left" || direction === "up" ? -1 : 1;
362
- const offset = isEntering ? (1 - p) * 100 * -sign : p * 100 * sign;
363
- const transform = axis === "x" ? `translateX(${offset}%)` : `translateY(${offset}%)`;
364
- return /* @__PURE__ */ jsx8(
365
- "div",
366
- {
367
- style: {
368
- position: "absolute",
369
- inset: 0,
370
- overflow: "hidden",
371
- transform,
372
- willChange: "transform"
373
- },
374
- children
375
- }
376
- );
377
- };
378
- var directionalWipe = (props) => ({
379
- component: DirectionalWipePresentation,
380
- props: props ?? {}
381
- });
382
- var DirectionalWipe = DirectionalWipePresentation;
383
-
384
- // src/transitions/swipe-transition-wipe/index.tsx
385
- import { Easing as Easing3, interpolate as interpolate9 } from "remotion";
386
- import { jsx as jsx9, jsxs as jsxs3 } from "react/jsx-runtime";
387
- var SwipeTransitionWipePresentation = ({ children, presentationDirection, presentationProgress, passedProps }) => {
388
- const { direction = "left", dimStrength = 0.4, parallaxFactor = 0.6 } = passedProps;
389
- const isEntering = presentationDirection === "entering";
390
- const sign = direction === "left" ? -1 : 1;
391
- const p = interpolate9(presentationProgress, [0, 1], [0, 1], {
392
- easing: Easing3.bezier(0.3, 0.9, 0.35, 1)
393
- });
394
- if (!isEntering) {
395
- const dim = interpolate9(p, [0, 1], [0, dimStrength]);
396
- return /* @__PURE__ */ jsxs3(
397
- "div",
398
- {
399
- style: {
400
- position: "absolute",
401
- inset: 0,
402
- overflow: "hidden",
403
- transform: `translateX(${p * 100 * sign}%)`,
404
- willChange: "transform"
405
- },
406
- children: [
407
- children,
408
- /* @__PURE__ */ jsx9("div", { style: { position: "absolute", inset: 0, background: "#000", opacity: dim } })
409
- ]
410
- }
411
- );
412
- }
413
- const outer = (1 - p) * 100 * -sign;
414
- const inner = (1 - p) * 30 * sign * parallaxFactor;
415
- return /* @__PURE__ */ jsx9(
416
- "div",
417
- {
418
- style: {
419
- position: "absolute",
420
- inset: 0,
421
- overflow: "hidden",
422
- transform: `translateX(${outer}%)`,
423
- willChange: "transform"
424
- },
425
- children: /* @__PURE__ */ jsx9(
426
- "div",
427
- {
428
- style: {
429
- position: "absolute",
430
- inset: 0,
431
- transform: `translateX(${inner}%)`,
432
- willChange: "transform"
433
- },
434
- children
435
- }
436
- )
437
- }
438
- );
439
- };
440
- var swipeTransitionWipe = (props) => ({
441
- component: SwipeTransitionWipePresentation,
442
- props: props ?? {}
443
- });
444
- var SwipeTransitionWipe = SwipeTransitionWipePresentation;
445
-
446
- // src/transitions/grid-pixelate-wipe/index.tsx
447
- import { useMemo as useMemo7 } from "react";
448
- import { interpolate as interpolate10 } from "remotion";
449
- import { jsx as jsx10, jsxs as jsxs4 } from "react/jsx-runtime";
450
- function spiralIndices(cols, rows) {
451
- const out = Array.from({ length: rows }, () => Array(cols).fill(0));
452
- let top = 0;
453
- let bottom = rows - 1;
454
- let left = 0;
455
- let right = cols - 1;
456
- let i = 0;
457
- while (top <= bottom && left <= right) {
458
- for (let x = left; x <= right; x++) out[top][x] = i++;
459
- top++;
460
- for (let y = top; y <= bottom; y++) out[y][right] = i++;
461
- right--;
462
- if (top <= bottom) {
463
- for (let x = right; x >= left; x--) out[bottom][x] = i++;
464
- bottom--;
465
- }
466
- if (left <= right) {
467
- for (let y = bottom; y >= top; y--) out[y][left] = i++;
468
- left++;
469
- }
470
- }
471
- return out;
472
- }
473
- var GridPixelateWipePresentation = ({ children, presentationDirection, presentationProgress, passedProps }) => {
474
- const {
475
- cols = 12,
476
- rows = 7,
477
- pattern = "wave",
478
- cellColor = "#0b0b10"
479
- } = passedProps;
480
- const isEntering = presentationDirection === "entering";
481
- const p = presentationProgress;
482
- const delays = useMemo7(() => {
483
- const raw = Array.from({ length: rows }, () => Array(cols).fill(0));
484
- const spiral = pattern === "spiral" ? spiralIndices(cols, rows) : null;
485
- for (let y = 0; y < rows; y++) {
486
- for (let x = 0; x < cols; x++) {
487
- if (pattern === "wave") {
488
- raw[y][x] = Math.hypot(x - (cols - 1) / 2, y - (rows - 1) / 2);
489
- } else if (pattern === "diagonal") {
490
- raw[y][x] = x + y;
491
- } else if (spiral) {
492
- raw[y][x] = spiral[y][x];
493
- }
494
- }
495
- }
496
- let min = Infinity;
497
- let max = -Infinity;
498
- for (const row of raw) for (const v of row) {
499
- min = Math.min(min, v);
500
- max = Math.max(max, v);
501
- }
502
- const range = max - min || 1;
503
- return raw.map((row) => row.map((v) => (v - min) / range));
504
- }, [cols, rows, pattern]);
505
- const visible = isEntering ? p >= 0.5 : p < 0.5;
506
- const cells = [];
507
- if (isEntering) {
508
- const FEATHER = 0.25;
509
- for (let y = 0; y < rows; y++) {
510
- for (let x = 0; x < cols; x++) {
511
- const d = delays[y][x] * (1 - FEATHER);
512
- const inO = interpolate10(p * 2, [d, d + FEATHER], [0, 1], {
513
- extrapolateLeft: "clamp",
514
- extrapolateRight: "clamp"
515
- });
516
- const outO = interpolate10(p * 2 - 1, [d, d + FEATHER], [1, 0], {
517
- extrapolateLeft: "clamp",
518
- extrapolateRight: "clamp"
519
- });
520
- const opacity = p < 0.5 ? inO : outO;
521
- if (opacity <= 1e-3) continue;
522
- cells.push(
523
- /* @__PURE__ */ jsx10(
524
- "div",
525
- {
526
- style: {
527
- position: "absolute",
528
- left: `${x / cols * 100}%`,
529
- top: `${y / rows * 100}%`,
530
- width: `${100 / cols}%`,
531
- height: `${100 / rows}%`,
532
- background: cellColor,
533
- opacity
534
- }
535
- },
536
- `${x}-${y}`
537
- )
538
- );
539
- }
540
- }
541
- }
542
- return /* @__PURE__ */ jsxs4("div", { style: { position: "absolute", inset: 0, overflow: "hidden" }, children: [
543
- /* @__PURE__ */ jsx10("div", { style: { position: "absolute", inset: 0, opacity: visible ? 1 : 0 }, children }),
544
- cells
545
- ] });
546
- };
547
- var gridPixelateWipe = (props) => ({
548
- component: GridPixelateWipePresentation,
549
- props: props ?? {}
550
- });
551
- var GridPixelateWipe = GridPixelateWipePresentation;
552
-
553
- // src/transitions/kinetic-type-mask/index.tsx
554
- import { useId } from "react";
555
- import { Easing as Easing4, interpolate as interpolate11 } from "remotion";
556
- import { jsx as jsx11, jsxs as jsxs5 } from "react/jsx-runtime";
557
- var KineticTypeMaskPresentation = ({ children, presentationDirection, presentationProgress, passedProps }) => {
558
- const { text = "NEXT", maxScale = 90 } = passedProps;
559
- const isEntering = presentationDirection === "entering";
560
- const rawId = useId().replace(/[:#]/g, "");
561
- const clipId = `ktm-${rawId}`;
562
- const slam = interpolate11(presentationProgress, [0, 0.25], [3, 1], {
563
- extrapolateLeft: "clamp",
564
- extrapolateRight: "clamp",
565
- easing: Easing4.bezier(0.2, 0.9, 0.3, 1)
566
- });
567
- const grow = interpolate11(presentationProgress, [0.3, 1], [1, maxScale], {
568
- extrapolateLeft: "clamp",
569
- extrapolateRight: "clamp",
570
- easing: Easing4.bezier(0.7, 0, 0.84, 0)
571
- });
572
- const scale = presentationProgress < 0.3 ? slam : grow;
573
- if (!isEntering) {
574
- return /* @__PURE__ */ jsx11("div", { style: { position: "absolute", inset: 0 }, children });
575
- }
576
- return /* @__PURE__ */ jsxs5("div", { style: { position: "absolute", inset: 0, overflow: "hidden" }, children: [
577
- /* @__PURE__ */ jsx11(
578
- "div",
579
- {
580
- style: {
581
- position: "absolute",
582
- inset: 0,
583
- clipPath: `url(#${clipId})`,
584
- WebkitClipPath: `url(#${clipId})`
585
- },
586
- children
587
- }
588
- ),
589
- presentationProgress < 0.3 && /* @__PURE__ */ jsx11(
590
- "div",
591
- {
592
- style: {
593
- position: "absolute",
594
- inset: 0,
595
- display: "flex",
596
- alignItems: "center",
597
- justifyContent: "center",
598
- fontSize: "70vh",
599
- fontWeight: 900,
600
- fontFamily: "inherit",
601
- letterSpacing: "-0.04em",
602
- color: "rgba(255,255,255,0.92)",
603
- transform: `scale(${slam})`,
604
- transformOrigin: "center center",
605
- willChange: "transform",
606
- mixBlendMode: "difference"
607
- },
608
- children: text
609
- }
610
- ),
611
- /* @__PURE__ */ jsx11("svg", { width: "0", height: "0", style: { position: "absolute" }, children: /* @__PURE__ */ jsx11("defs", { children: /* @__PURE__ */ jsx11("clipPath", { id: clipId, clipPathUnits: "objectBoundingBox", children: /* @__PURE__ */ jsx11(
612
- "text",
613
- {
614
- x: "0.5",
615
- y: "0.62",
616
- textAnchor: "middle",
617
- fontSize: 0.42,
618
- fontWeight: 900,
619
- fontFamily: "Helvetica, Arial, sans-serif",
620
- transform: `translate(0.5 0.5) scale(${scale}) translate(-0.5 -0.5)`,
621
- children: text
622
- }
623
- ) }) }) })
624
- ] });
625
- };
626
- var kineticTypeMask = (props) => ({
627
- component: KineticTypeMaskPresentation,
628
- props: props ?? {}
629
- });
630
- var KineticTypeMask = KineticTypeMaskPresentation;
631
-
632
- // src/transitions/zoom-through-transition/index.tsx
633
- import { Easing as Easing5, interpolate as interpolate12, useCurrentFrame } from "remotion";
634
- import { jsx as jsx12 } from "react/jsx-runtime";
635
- var FONT_FAMILY = "inherit";
636
- function DefaultContent() {
637
- return /* @__PURE__ */ jsx12(
638
- "div",
639
- {
640
- style: {
641
- width: 320,
642
- height: 200,
643
- borderRadius: 24,
644
- background: `linear-gradient(135deg, ${ACCENT} 0%, ${VIOLET} 100%)`,
645
- display: "flex",
646
- alignItems: "center",
647
- justifyContent: "center",
648
- color: TEXT_HI,
649
- fontFamily: FONT_FAMILY,
650
- fontSize: 48,
651
- fontWeight: 700,
652
- letterSpacing: "-0.03em"
653
- },
654
- children: "Zoom"
655
- }
656
- );
657
- }
658
- function ZoomThroughTransition({
659
- children,
660
- targetScale = 20,
661
- transformOrigin = "center center",
662
- background = "transparent",
663
- beatFrames = 45,
664
- speed = 1,
665
- className
666
- }) {
667
- const frame = useCurrentFrame() * speed;
668
- const scale = interpolate12(frame, [0, beatFrames], [1, targetScale], {
669
- extrapolateRight: "clamp",
670
- easing: Easing5.bezier(0.7, 0, 0.84, 0)
671
- });
672
- const opacity = interpolate12(
673
- frame,
674
- [0, beatFrames * 0.7, beatFrames],
675
- [1, 1, 0],
676
- { extrapolateRight: "clamp" }
677
- );
678
- const content = children ?? /* @__PURE__ */ jsx12(DefaultContent, {});
679
- return /* @__PURE__ */ jsx12(
680
- "div",
681
- {
682
- className,
683
- style: {
684
- position: "absolute",
685
- inset: 0,
686
- background,
687
- display: "flex",
688
- alignItems: "center",
689
- justifyContent: "center",
690
- overflow: "hidden"
691
- },
692
- children: /* @__PURE__ */ jsx12(
693
- "div",
694
- {
695
- style: {
696
- transform: `scale(${scale})`,
697
- transformOrigin,
698
- opacity,
699
- willChange: "transform, opacity"
700
- },
701
- children: content
702
- }
703
- )
704
- }
705
- );
706
- }
707
-
708
- // src/transitions/code-diff-wipe/index.tsx
709
- import { Easing as Easing6, interpolate as interpolate13, useCurrentFrame as useCurrentFrame2 } from "remotion";
710
- import { jsx as jsx13, jsxs as jsxs6 } from "react/jsx-runtime";
711
- var DEFAULT_BEFORE = `function getUser(id) {
712
- return fetch('/api/user/' + id)
713
- .then(function (res) {
714
- return res.json();
715
- })
716
- .then(function (data) {
717
- if (data.error) {
718
- throw new Error(data.error);
719
- }
720
- return data.user;
721
- });
722
- }`;
723
- var DEFAULT_AFTER = `async function getUser(id: string) {
724
- const res = await fetch(\`/api/user/\${id}\`);
725
- const { user, error } = await res.json();
726
- if (error) throw new Error(error);
727
- return user;
728
- }`;
729
- function CodeDiffWipe({
730
- before = DEFAULT_BEFORE,
731
- after = DEFAULT_AFTER,
732
- language = "tsx",
733
- background = BG,
734
- accent = ACCENT,
735
- transitionStart = 20,
736
- transitionDuration = 60,
737
- showHandle = true,
738
- speed = 1,
739
- className
740
- }) {
741
- const frame = useCurrentFrame2() * speed;
742
- const progress = interpolate13(
743
- frame,
744
- [transitionStart, transitionStart + transitionDuration],
745
- [0, 1],
746
- {
747
- extrapolateLeft: "clamp",
748
- extrapolateRight: "clamp",
749
- easing: Easing6.inOut(Easing6.cubic)
750
- }
751
- );
752
- const wipePercent = progress * 100;
753
- return /* @__PURE__ */ jsx13(
754
- "div",
755
- {
756
- className,
757
- style: {
758
- position: "absolute",
759
- inset: 0,
760
- display: "flex",
761
- alignItems: "center",
762
- justifyContent: "center",
763
- background: BG_DEEP,
764
- fontFamily: "inherit"
765
- },
766
- children: /* @__PURE__ */ jsxs6(
767
- "div",
768
- {
769
- style: {
770
- position: "relative",
771
- width: 980,
772
- height: 560,
773
- borderRadius: 14,
774
- overflow: "hidden",
775
- background,
776
- border: `1px solid ${BORDER}`
777
- },
778
- children: [
779
- /* @__PURE__ */ jsx13(
780
- CodePane,
781
- {
782
- code: after,
783
- background,
784
- label: "AFTER",
785
- labelColor: accent,
786
- language
787
- }
788
- ),
789
- /* @__PURE__ */ jsx13(
790
- "div",
791
- {
792
- style: {
793
- position: "absolute",
794
- inset: 0,
795
- clipPath: `inset(0 ${wipePercent}% 0 0)`
796
- },
797
- children: /* @__PURE__ */ jsx13(
798
- CodePane,
799
- {
800
- code: before,
801
- background,
802
- label: "BEFORE",
803
- labelColor: DANGER,
804
- language,
805
- dimmed: true
806
- }
807
- )
808
- }
809
- ),
810
- showHandle && wipePercent > 0 && wipePercent < 100 && /* @__PURE__ */ jsx13(
811
- "div",
812
- {
813
- style: {
814
- position: "absolute",
815
- top: 0,
816
- bottom: 0,
817
- left: `${wipePercent}%`,
818
- width: 2,
819
- background: accent,
820
- transform: "translateX(-1px)"
821
- },
822
- children: /* @__PURE__ */ jsx13(
823
- "div",
824
- {
825
- style: {
826
- position: "absolute",
827
- top: "50%",
828
- left: "50%",
829
- transform: "translate(-50%, -50%)",
830
- width: 40,
831
- height: 40,
832
- borderRadius: "50%",
833
- background: accent,
834
- display: "flex",
835
- alignItems: "center",
836
- justifyContent: "center",
837
- color: BG,
838
- fontSize: 18,
839
- fontWeight: 700
840
- },
841
- children: "<>"
842
- }
843
- )
844
- }
845
- )
846
- ]
847
- }
848
- )
849
- }
850
- );
851
- }
852
- function CodePane({
853
- code,
854
- background,
855
- label,
856
- labelColor,
857
- language,
858
- dimmed
859
- }) {
860
- const lines = code.split("\n");
861
- return /* @__PURE__ */ jsxs6(
862
- "div",
863
- {
864
- style: {
865
- position: "absolute",
866
- inset: 0,
867
- background,
868
- display: "flex",
869
- flexDirection: "column"
870
- },
871
- children: [
872
- /* @__PURE__ */ jsxs6(
873
- "div",
874
- {
875
- style: {
876
- height: 44,
877
- padding: "0 18px",
878
- display: "flex",
879
- alignItems: "center",
880
- justifyContent: "space-between",
881
- borderBottom: "1px solid rgba(255,255,255,0.06)",
882
- background: "rgba(255,255,255,0.02)"
883
- },
884
- children: [
885
- /* @__PURE__ */ jsx13(
886
- "div",
887
- {
888
- style: {
889
- color: TEXT_MUTED,
890
- fontSize: 13,
891
- fontFamily: "monospace"
892
- },
893
- children: language
894
- }
895
- ),
896
- /* @__PURE__ */ jsx13(
897
- "div",
898
- {
899
- style: {
900
- fontSize: 11,
901
- fontWeight: 700,
902
- letterSpacing: "0.12em",
903
- color: labelColor,
904
- padding: "4px 10px",
905
- borderRadius: 999,
906
- background: `${labelColor}1a`,
907
- border: `1px solid ${labelColor}55`
908
- },
909
- children: label
910
- }
911
- )
912
- ]
913
- }
914
- ),
915
- /* @__PURE__ */ jsx13(
916
- "pre",
917
- {
918
- style: {
919
- flex: 1,
920
- margin: 0,
921
- padding: 24,
922
- color: dimmed ? TEXT_MUTED : TEXT,
923
- fontSize: 16,
924
- lineHeight: 1.6,
925
- fontFamily: "monospace",
926
- overflow: "hidden",
927
- whiteSpace: "pre"
928
- },
929
- children: lines.map((line, i) => /* @__PURE__ */ jsxs6("div", { style: { display: "flex" }, children: [
930
- /* @__PURE__ */ jsx13(
931
- "span",
932
- {
933
- style: {
934
- width: 32,
935
- textAlign: "right",
936
- marginRight: 16,
937
- color: BORDER,
938
- userSelect: "none"
939
- },
940
- children: i + 1
941
- }
942
- ),
943
- /* @__PURE__ */ jsx13("span", { children: line || " " })
944
- ] }, i))
945
- }
946
- )
947
- ]
948
- }
949
- );
950
- }
951
-
952
- // src/transitions/chromatic-aberration-wipe/config.ts
953
- import { z } from "zod";
954
- var paramsSchema = z.object({
955
- direction: z.enum(["left", "right"]).default("left").describe("Slide direction the OLD scene exits toward."),
956
- aberrationOffset: z.number().min(0).max(40).default(12).describe("Pixel offset between R/B channels at peak. 8\u201316 reads as digital glitch.")
957
- }).passthrough();
958
- var config = {
959
- id: "chromatic-aberration-wipe",
960
- component: ChromaticAberrationWipe,
961
- name: "Chromatic Aberration Wipe",
962
- category: "transitions",
963
- kind: "transition",
964
- version: "0.2.0",
965
- intent: "glitch-cut",
966
- description: "Standalone wipe with RGB-channel split chromatic aberration at the boundary. Feels digital, slightly broken, on-the-edge. The aberration peaks mid-transition then resolves clean.",
967
- useWhen: 'Tech/digital aesthetic, glitchy product demos, "system breach" moments. Avoid for editorial / serious content (the aberration looks like a CRT artifact).',
968
- pairsWith: ["glass-code-block", "terminal-simulator"],
969
- avoidWith: ["cinematic-title", "changelog-bite"],
970
- tier: "niche",
971
- useCase: ["transition"],
972
- tags: ["transition", "wipe", "chromatic", "aberration", "rgb-split", "glitch", "standalone"],
973
- mood: ["glitchy", "tech-demo"],
974
- paramsSchema,
975
- propDefaults: { direction: "left", aberrationOffset: 12 },
976
- createPresentation: (params) => chromaticAberrationWipe(params),
977
- examples: [
978
- { name: "digital-glitch", mood: ["glitchy", "tech-demo"], params: { direction: "left", aberrationOffset: 12 } }
979
- ],
980
- textParam: null,
981
- subtextParam: null,
982
- tokens: [],
983
- durationInFrames: 30,
984
- fps: 30,
985
- width: 1920,
986
- height: 1080,
987
- preview: { thumbnailFrame: 15, mode: "loop" }
988
- };
989
-
990
- // src/transitions/code-diff-wipe/config.ts
991
- import { z as z2 } from "zod";
992
- var paramsSchema2 = z2.object({
993
- before: z2.string().optional().describe('Source code shown on the left of the wipe (the "before" state). Defaults to a JS callback example.'),
994
- after: z2.string().optional().describe('Source code revealed by the wipe (the "after" state). Defaults to an async/await TS rewrite of `before`.'),
995
- language: z2.string().default("tsx").describe('Language label rendered in the pane header (e.g. "tsx", "py", "rust"). Cosmetic only \u2014 no syntax highlighting is applied.'),
996
- background: z2.string().default(BG).describe("Code pane background color."),
997
- accent: z2.string().default(ACCENT).describe("Accent color for the AFTER label, the wipe handle, and its glow."),
998
- transitionStart: z2.number().int().min(0).default(20).describe("Frame at which the wipe begins."),
999
- transitionDuration: z2.number().int().min(6).max(180).default(60).describe("Frames the wipe takes to complete."),
1000
- showHandle: z2.boolean().default(true).describe("Whether to draw the vertical handle + circular grip at the wipe boundary."),
1001
- speed: z2.number().min(0.25).max(4).default(1).describe("Playback speed multiplier.")
1002
- }).passthrough();
1003
- var config2 = {
1004
- id: "code-diff-wipe",
1005
- component: CodeDiffWipe,
1006
- name: "Code Diff Wipe",
1007
- category: "transitions",
1008
- kind: "component",
1009
- version: "0.1.1",
1010
- intent: "reveal-code-diff",
1011
- description: 'Self-contained before/after code reveal: two code panes stacked, with a clipped wipe revealing AFTER over BEFORE plus a glowing accent handle. Not a TransitionSeries presentation \u2014 drop in as a scene primitive when the story is "this code became that code".',
1012
- useWhen: 'Tech-demo refactor beats, "callbacks \u2192 async/await" style reveals, language migration walkthroughs, before/after engineering content. Avoid for non-code content (use frosted-glass-wipe or swipe-transition-wipe for image/video before/after) and avoid stacking with other glitchy transitions.',
1013
- pairsWith: ["terminal-simulator", "glass-code-block", "live-code-compilation"],
1014
- avoidWith: ["glitch-cut", "chromatic-aberration-wipe"],
1015
- tier: "standard",
1016
- useCase: ["transition", "explainer"],
1017
- tags: ["transition", "wipe", "code", "diff", "before-after", "tech-demo", "standalone"],
1018
- mood: ["tech-demo", "editorial", "minimal"],
1019
- paramsSchema: paramsSchema2,
1020
- propDefaults: {
1021
- language: "tsx",
1022
- background: BG,
1023
- accent: ACCENT,
1024
- transitionStart: 20,
1025
- transitionDuration: 60,
1026
- showHandle: true,
1027
- speed: 1
1028
- },
1029
- examples: [
1030
- {
1031
- name: "callbacks-to-async",
1032
- mood: ["tech-demo"],
1033
- params: { language: "tsx", accent: ACCENT, transitionStart: 20, transitionDuration: 60 },
1034
- description: "Default JS callbacks \u2192 async/await TS rewrite. Cyan accent."
1035
- },
1036
- {
1037
- name: "python-rewrite",
1038
- mood: ["editorial", "minimal"],
1039
- params: {
1040
- language: "py",
1041
- accent: WARNING,
1042
- before: 'def get_user(id):\n res = requests.get(f"/api/user/{id}")\n return res.json()',
1043
- after: 'async def get_user(id: str) -> User:\n async with session.get(f"/api/user/{id}") as r:\n return User(**await r.json())',
1044
- transitionDuration: 75
1045
- },
1046
- description: "Slower, amber accent \u2014 for a more documentary refactor pace."
1047
- }
1048
- ],
1049
- textParam: "before",
1050
- subtextParam: "after",
1051
- tokens: [
1052
- { propPath: "accent", cssVar: "--cf-accent", fallback: ACCENT, brandKitPath: "colors.accent" },
1053
- { propPath: "background", cssVar: "--cf-surface", fallback: BG, brandKitPath: "colors.surface" }
1054
- ],
1055
- durationInFrames: 120,
1056
- fps: 30,
1057
- width: 1920,
1058
- height: 1080,
1059
- preview: { thumbnailFrame: 50, mode: "oneshot", defaultExample: "callbacks-to-async" }
1060
- };
1061
-
1062
- // src/transitions/directional-wipe/config.ts
1063
- import { z as z3 } from "zod";
1064
- var paramsSchema3 = z3.object({
1065
- direction: z3.enum(["left", "right", "up", "down"]).default("left").describe("Direction the OLD scene exits toward.")
1066
- }).passthrough();
1067
- var config3 = {
1068
- id: "directional-wipe",
1069
- component: DirectionalWipe,
1070
- name: "Directional Wipe",
1071
- category: "transitions",
1072
- kind: "transition",
1073
- version: "0.2.0",
1074
- intent: "reveal-mask",
1075
- description: "Hard-edge directional wipe between two scenes. Standalone component (renders both scenes as from/to ReactNodes). Four directions; clean and quick.",
1076
- useWhen: "Fast cuts in a montage, simple before/after, when you want clarity over flair. For TransitionSeries-driven wipes between clips, use the Remotion built-in `wipe` (already in cueframe's transitions catalog).",
1077
- pairsWith: ["mesh-gradient-bg"],
1078
- avoidWith: ["frosted-glass-wipe", "chromatic-aberration-wipe"],
1079
- tier: "standard",
1080
- useCase: ["transition"],
1081
- tags: ["transition", "wipe", "directional", "hard-edge", "standalone"],
1082
- mood: ["minimal", "tech-demo"],
1083
- paramsSchema: paramsSchema3,
1084
- propDefaults: { direction: "left" },
1085
- createPresentation: (params) => directionalWipe(params),
1086
- examples: [
1087
- { name: "left-wipe", mood: ["minimal"], params: { direction: "left" } },
1088
- { name: "up-wipe", mood: ["minimal"], params: { direction: "up" } }
1089
- ],
1090
- textParam: null,
1091
- subtextParam: null,
1092
- tokens: [],
1093
- durationInFrames: 30,
1094
- fps: 30,
1095
- width: 1920,
1096
- height: 1080,
1097
- preview: { thumbnailFrame: 15, mode: "loop" }
1098
- };
1099
-
1100
- // src/transitions/frosted-glass-wipe/config.ts
1101
- import { z as z4 } from "zod";
1102
- var paramsSchema4 = z4.object({
1103
- glassBlur: z4.number().min(0).max(60).default(24).describe("Frosted-glass backdrop-filter blur radius in pixels.")
1104
- }).passthrough();
1105
- var config4 = {
1106
- id: "frosted-glass-wipe",
1107
- component: FrostedGlassWipe,
1108
- name: "Frosted Glass Wipe",
1109
- category: "transitions",
1110
- kind: "transition",
1111
- version: "0.2.0",
1112
- intent: "reveal-mask",
1113
- description: "Standalone scene-to-scene wipe with a frosted-glass blur band sweeping across the frame. Renders both scenes as ReactNode props (from/to) and animates a glassmorphic vertical strip between them. Note: not a TransitionSeries presentation \u2014 use as a scene-pair component.",
1114
- useWhen: 'Showcase reels where you control both A and B sides explicitly, product demo "before/after" with one beat of glass between, premium/glossy aesthetic. For TransitionSeries-driven clip-to-clip transitions, use light-leak, ink-wipe, or luma-matte instead.',
1115
- pairsWith: ["mesh-gradient-bg", "shimmer-sweep"],
1116
- avoidWith: ["light-leak", "ink-wipe"],
1117
- tier: "standard",
1118
- useCase: ["transition"],
1119
- tags: ["transition", "wipe", "glass", "frosted", "glassmorphism", "standalone"],
1120
- mood: ["cinematic", "corporate", "minimal"],
1121
- paramsSchema: paramsSchema4,
1122
- propDefaults: { glassBlur: 24 },
1123
- createPresentation: (params) => frostedGlassWipe(params),
1124
- examples: [
1125
- { name: "glossy-reveal", mood: ["soft", "corporate"], params: { glassBlur: 24 } }
1126
- ],
1127
- textParam: null,
1128
- subtextParam: null,
1129
- tokens: [],
1130
- durationInFrames: 30,
1131
- fps: 30,
1132
- width: 1920,
1133
- height: 1080,
1134
- preview: { thumbnailFrame: 15, mode: "loop" }
1135
- };
1136
-
1137
- // src/transitions/glitch-cut/config.ts
1138
- import { z as z5 } from "zod";
1139
- var paramsSchema5 = z5.object({
1140
- intensity: z5.number().min(0).max(1).default(0.5).describe("Glitch intensity. 0.4\u20130.6 reads as deliberate; >0.8 feels like a CRT failure."),
1141
- slices: z5.number().int().min(1).max(20).default(5).describe("Number of horizontal slice displacement bands. More = more chaos.")
1142
- }).passthrough();
1143
- var config5 = {
1144
- id: "glitch-cut",
1145
- component: GlitchCut,
1146
- name: "Glitch Cut",
1147
- category: "transitions",
1148
- kind: "transition",
1149
- version: "0.1.0",
1150
- intent: "glitch-cut",
1151
- description: "Digital glitch cut with RGB drop-shadow split, horizontal slice displacement, and snap mid-transition. The new scene appears at the peak glitch and resolves clean.",
1152
- useWhen: 'Tech/digital aesthetic, hacking sequences, "system error" beats, sharp tonal shifts. Avoid editorial/serious moments and avoid stacking with other glitch primitives (chromatic-aberration-wipe is similar \u2014 pick one).',
1153
- pairsWith: ["terminal-simulator", "glass-code-block", "matrix-decode"],
1154
- avoidWith: ["light-leak", "luma-matte", "chromatic-aberration-wipe"],
1155
- tier: "niche",
1156
- useCase: ["transition"],
1157
- tags: ["transition", "glitch", "cut", "rgb-split", "digital"],
1158
- mood: ["glitchy", "tech-demo", "aggressive"],
1159
- paramsSchema: paramsSchema5,
1160
- propDefaults: { intensity: 0.5, slices: 5 },
1161
- createPresentation: (params) => glitchCut(params),
1162
- examples: [
1163
- { name: "subtle-glitch", mood: ["tech-demo"], params: { intensity: 0.4, slices: 3 } },
1164
- { name: "heavy-fail", mood: ["glitchy", "aggressive"], params: { intensity: 0.8, slices: 8 } }
1165
- ],
1166
- textParam: null,
1167
- subtextParam: null,
1168
- tokens: [],
1169
- durationInFrames: 30,
1170
- fps: 30,
1171
- width: 1920,
1172
- height: 1080,
1173
- preview: { thumbnailFrame: 15, mode: "loop", defaultExample: "subtle-glitch" }
1174
- };
1175
-
1176
- // src/transitions/grid-pixelate-wipe/config.ts
1177
- import { z as z6 } from "zod";
1178
- var paramsSchema6 = z6.object({
1179
- cols: z6.number().int().min(2).max(48).default(12).describe("Grid column count. Higher = finer pixelation."),
1180
- rows: z6.number().int().min(2).max(27).default(7).describe("Grid row count. Pair with `cols` to match the frame aspect."),
1181
- pattern: z6.enum(["wave", "diagonal", "spiral"]).default("wave").describe("Cell-activation order. `wave` = radial from center, `diagonal` = top-left to bottom-right, `spiral` = perimeter inward."),
1182
- cellColor: z6.string().default("#0b0b10").describe("Mosaic cell color that flashes over the cut.")
1183
- }).passthrough();
1184
- var config6 = {
1185
- id: "grid-pixelate-wipe",
1186
- component: GridPixelateWipe,
1187
- name: "Grid Pixelate Wipe",
1188
- category: "transitions",
1189
- kind: "transition",
1190
- version: "0.2.0",
1191
- intent: "reveal-mask",
1192
- description: "Pixelated grid wipe: a black-cell grid covers scene A, then cells fade out in a chosen pattern (wave / diagonal / spiral) to reveal scene B underneath. Standalone scene-pair component (from/to ReactNode props).",
1193
- useWhen: 'Tech/demo reels where a digital "decode" feel suits the brand, retro game-style transitions, gallery-to-detail reveals. Pick `wave` for hero moments, `diagonal` for kinetic montages, `spiral` for closing/section-end beats. Avoid for editorial/cinematic content \u2014 the grid reads as too digital.',
1194
- pairsWith: ["terminal-simulator", "matrix-decode", "glass-code-block"],
1195
- avoidWith: ["light-leak", "ink-wipe", "frosted-glass-wipe"],
1196
- tier: "niche",
1197
- useCase: ["transition"],
1198
- tags: ["transition", "wipe", "grid", "pixelate", "mosaic", "standalone"],
1199
- mood: ["tech-demo", "playful", "glitchy"],
1200
- paramsSchema: paramsSchema6,
1201
- propDefaults: { cols: 12, rows: 7, pattern: "wave", cellColor: "#0b0b10" },
1202
- createPresentation: (params) => gridPixelateWipe(params),
1203
- examples: [
1204
- { name: "radial-wave", mood: ["tech-demo"], params: { cols: 12, rows: 7, pattern: "wave", cellColor: "#0b0b10" } },
1205
- { name: "fine-spiral", mood: ["glitchy"], params: { cols: 24, rows: 14, pattern: "spiral", cellColor: "#0b0b10" } }
1206
- ],
1207
- textParam: null,
1208
- subtextParam: null,
1209
- tokens: [],
1210
- durationInFrames: 30,
1211
- fps: 30,
1212
- width: 1920,
1213
- height: 1080,
1214
- preview: { thumbnailFrame: 15, mode: "loop" }
1215
- };
1216
-
1217
- // src/transitions/ink-wipe/config.ts
1218
- import { z as z7 } from "zod";
1219
- var paramsSchema7 = z7.object({
1220
- direction: z7.enum(["left", "right", "up", "down"]).default("left").describe("Direction the ink travels."),
1221
- color: z7.string().default("black").describe("Color of the ink leading edge.")
1222
- }).passthrough();
1223
- var config7 = {
1224
- id: "ink-wipe",
1225
- component: InkWipe,
1226
- name: "Ink Wipe",
1227
- category: "transitions",
1228
- kind: "transition",
1229
- version: "0.1.1",
1230
- intent: "reveal-mask",
1231
- description: "Organic wipe transition using clip-path inset, with a colored ink edge leading the boundary. The entering scene reveals from the wipe direction; a thin colored bar trails the edge.",
1232
- useWhen: 'Editorial cuts where you want personality but not glitch, podcast clip-to-clip with a "page-turn" feel. Black ink reads as classic; brand-color ink ties to the design system.',
1233
- pairsWith: ["lower-third", "parallax", "vignette"],
1234
- avoidWith: ["light-leak", "frosted-glass-wipe"],
1235
- tier: "niche",
1236
- useCase: ["transition"],
1237
- tags: ["transition", "wipe", "ink", "edge", "directional"],
1238
- mood: ["editorial", "cinematic"],
1239
- paramsSchema: paramsSchema7,
1240
- propDefaults: { direction: "left", color: "black" },
1241
- createPresentation: (params) => inkWipe(params),
1242
- examples: [
1243
- { name: "classic-black", mood: ["editorial"], params: { direction: "left", color: "black" } },
1244
- { name: "brand-tinted", mood: ["corporate"], params: { direction: "right", color: ACCENT } }
1245
- ],
1246
- textParam: null,
1247
- subtextParam: null,
1248
- tokens: [
1249
- { propPath: "color", cssVar: "--cf-accent", fallback: "black", brandKitPath: "colors.accent" }
1250
- ],
1251
- durationInFrames: 30,
1252
- fps: 30,
1253
- width: 1920,
1254
- height: 1080,
1255
- preview: { thumbnailFrame: 15, mode: "loop", defaultExample: "classic-black" }
1256
- };
1257
-
1258
- // src/transitions/kinetic-type-mask/config.ts
1259
- import { z as z8 } from "zod";
1260
- var paramsSchema8 = z8.object({
1261
- text: z8.string().min(1).max(12).default("NEXT").describe("Word used as the type mask. Short ALL-CAPS reads best (3\u20136 letters). The new scene is revealed through the glyphs as they scale up."),
1262
- maxScale: z8.number().min(20).max(400).default(90).describe("Final glyph scale \u2014 must be large enough to fully consume the frame.")
1263
- }).passthrough();
1264
- var config8 = {
1265
- id: "kinetic-type-mask",
1266
- component: KineticTypeMask,
1267
- name: "Kinetic Type Mask",
1268
- category: "transitions",
1269
- kind: "transition",
1270
- version: "0.2.0",
1271
- intent: "reveal-mask",
1272
- description: "Bold typographic mask transition: a giant word holds, then scales up explosively, revealing the next scene clipped through the type. Standalone scene-pair component (renders both scenes via from/to ReactNode props).",
1273
- useWhen: 'Section breaks with a strong verbal beat ("NEXT", "DROP", "LIVE"), title-driven reels, podcast chapter changes. The word should reinforce a story beat \u2014 avoid generic placeholders. Skip for fast-cut montages where the hold reads as too slow, and avoid stacking with other text-heavy transitions.',
1274
- pairsWith: ["headline", "lower-third", "mesh-gradient-bg"],
1275
- avoidWith: ["glitch-cut", "chromatic-aberration-wipe", "directional-wipe"],
1276
- tier: "standard",
1277
- useCase: ["transition"],
1278
- tags: ["transition", "mask", "type", "kinetic", "typography", "standalone"],
1279
- mood: ["editorial", "aggressive", "cinematic"],
1280
- paramsSchema: paramsSchema8,
1281
- propDefaults: { text: "NEXT", maxScale: 90 },
1282
- createPresentation: (params) => kineticTypeMask(params),
1283
- examples: [
1284
- { name: "next-beat", mood: ["aggressive", "tech-demo"], params: { text: "NEXT", maxScale: 90 } }
1285
- ],
1286
- textParam: "text",
1287
- subtextParam: null,
1288
- tokens: [],
1289
- durationInFrames: 30,
1290
- fps: 30,
1291
- width: 1920,
1292
- height: 1080,
1293
- preview: { thumbnailFrame: 15, mode: "loop" }
1294
- };
1295
-
1296
- // src/transitions/light-leak/config.ts
1297
- import { z as z9 } from "zod";
1298
- var paramsSchema9 = z9.object({
1299
- hue: z9.number().min(0).max(360).default(30).describe("Hue rotation in degrees. 30 = warm amber (canonical analog leak); 200 = cool blue."),
1300
- seed: z9.number().int().min(0).default(0).describe("Random seed for variation. Reserved for future variant tuning.")
1301
- }).passthrough();
1302
- var config9 = {
1303
- id: "light-leak",
1304
- component: LightLeak,
1305
- name: "Light Leak",
1306
- category: "transitions",
1307
- kind: "transition",
1308
- version: "0.1.0",
1309
- intent: "film-leak",
1310
- description: "Analog film light-leak between clips. A warm bright overlay fades in then out across the cut, simulating the look of light catching the film between exposures. Implemented as a TransitionPresentation factory for `<TransitionSeries>`.",
1311
- useWhen: "Cinematic edits, montage transitions, podcast clips with a warm/editorial feel. Pair with grain + color-grade for the full analog treatment. Avoid for tech/digital content (the warm leak feels out of place).",
1312
- pairsWith: ["grain", "vignette", "color-grade", "parallax"],
1313
- avoidWith: ["glitch-cut", "chromatic-aberration-wipe"],
1314
- tier: "niche",
1315
- useCase: ["grade", "transition"],
1316
- tags: ["transition", "light-leak", "analog", "film", "warm"],
1317
- mood: ["cinematic", "editorial", "soft"],
1318
- paramsSchema: paramsSchema9,
1319
- propDefaults: { hue: 30, seed: 0 },
1320
- createPresentation: (params) => lightLeak(params),
1321
- examples: [
1322
- { name: "warm-amber", mood: ["cinematic"], params: { hue: 30, seed: 0 } },
1323
- { name: "cool-cyan", mood: ["editorial"], params: { hue: 190, seed: 0 } }
1324
- ],
1325
- textParam: null,
1326
- subtextParam: null,
1327
- tokens: [
1328
- { propPath: "hue", cssVar: "--cf-accent-hue", fallback: "30", brandKitPath: "colors.accentHue" }
1329
- ],
1330
- durationInFrames: 30,
1331
- fps: 30,
1332
- width: 1920,
1333
- height: 1080,
1334
- preview: { thumbnailFrame: 15, mode: "loop", defaultExample: "warm-amber" }
1335
- };
1336
-
1337
- // src/transitions/luma-matte/config.ts
1338
- import { z as z10 } from "zod";
1339
- var paramsSchema10 = z10.object({
1340
- matte: z10.enum(["smoke", "brush", "geometric"]).default("smoke").describe(
1341
- "Matte style. smoke: very soft 30px edge \u2014 dreamy. brush: medium 15px painterly. geometric: hard 5px \u2014 clean."
1342
- )
1343
- }).passthrough();
1344
- var config10 = {
1345
- id: "luma-matte",
1346
- component: LumaMatte,
1347
- name: "Luma Matte",
1348
- category: "transitions",
1349
- kind: "transition",
1350
- version: "0.1.0",
1351
- intent: "reveal-mask",
1352
- description: "Soft-edge wipe via CSS mask-image gradient. Three matte styles control edge softness: smoke (dreamy), brush (painterly), geometric (clean). Simulates luma-matte transitions without actual matte video files.",
1353
- useWhen: "Editorial, dreamy, or painterly transitions where a hard wipe would feel too abrupt. The smoke matte is forgiving; the geometric matte is the closest to a clean wipe.",
1354
- pairsWith: ["parallax", "color-grade", "cinematic-title"],
1355
- avoidWith: ["ink-wipe", "glitch-cut"],
1356
- tier: "standard",
1357
- useCase: ["transition"],
1358
- tags: ["transition", "matte", "luma", "soft-edge", "mask"],
1359
- mood: ["cinematic", "editorial", "soft"],
1360
- paramsSchema: paramsSchema10,
1361
- propDefaults: { matte: "smoke" },
1362
- createPresentation: (params) => lumaMatte(params),
1363
- examples: [
1364
- { name: "smoke-dreamy", mood: ["cinematic", "soft"], params: { matte: "smoke" } },
1365
- { name: "brush-painterly", mood: ["editorial"], params: { matte: "brush" } },
1366
- { name: "geometric-clean", mood: ["minimal"], params: { matte: "geometric" } }
1367
- ],
1368
- textParam: null,
1369
- subtextParam: null,
1370
- tokens: [],
1371
- durationInFrames: 30,
1372
- fps: 30,
1373
- width: 1920,
1374
- height: 1080,
1375
- preview: { thumbnailFrame: 15, mode: "loop", defaultExample: "smoke-dreamy" }
1376
- };
1377
-
1378
- // src/transitions/morph/config.ts
1379
- import { z as z11 } from "zod";
1380
- var paramsSchema11 = z11.object({
1381
- type: z11.enum(["dissolve", "displacement"]).default("dissolve").describe(
1382
- "Morph variant. dissolve: pure crossfade. displacement: crossfade + slight scale (entering grows, exiting shrinks) for organic feel."
1383
- )
1384
- }).passthrough();
1385
- var config11 = {
1386
- id: "morph",
1387
- component: Morph,
1388
- name: "Morph",
1389
- category: "transitions",
1390
- kind: "transition",
1391
- version: "0.1.0",
1392
- intent: "reveal-mask",
1393
- description: "Cross-dissolve / morph transition. The simplest and most-versatile transition; opacity crossfade by default, with optional displacement variant adding subtle scale dynamics.",
1394
- useWhen: "Editorial cuts, montage glue, anywhere a wipe would feel too aggressive. The default dissolve is the safest pick when you don't know what else to use.",
1395
- pairsWith: ["parallax", "lower-third", "color-grade"],
1396
- avoidWith: ["glitch-cut", "chromatic-aberration-wipe"],
1397
- tier: "standard",
1398
- useCase: ["transition"],
1399
- tags: ["transition", "morph", "dissolve", "crossfade", "simple"],
1400
- mood: ["editorial", "minimal", "soft"],
1401
- paramsSchema: paramsSchema11,
1402
- propDefaults: { type: "dissolve" },
1403
- createPresentation: (params) => morph(params),
1404
- examples: [
1405
- { name: "pure-dissolve", mood: ["minimal"], params: { type: "dissolve" } },
1406
- { name: "displacement-organic", mood: ["editorial"], params: { type: "displacement" } }
1407
- ],
1408
- textParam: null,
1409
- subtextParam: null,
1410
- tokens: [],
1411
- durationInFrames: 30,
1412
- fps: 30,
1413
- width: 1920,
1414
- height: 1080,
1415
- preview: { thumbnailFrame: 15, mode: "loop", defaultExample: "pure-dissolve" }
1416
- };
1417
-
1418
- // src/transitions/spatial-push/config.ts
1419
- import { z as z12 } from "zod";
1420
- var paramsSchema12 = z12.object({
1421
- direction: z12.enum(["up", "down", "left", "right"]).default("up").describe("Edge the NEW scene pushes in from. `up` = enters from below (most common).")
1422
- }).passthrough();
1423
- var config12 = {
1424
- id: "spatial-push",
1425
- component: SpatialPush,
1426
- name: "Spatial Push",
1427
- category: "transitions",
1428
- kind: "transition",
1429
- version: "0.2.0",
1430
- intent: "reveal-mask",
1431
- description: "iOS-style spatial push: scene A scales down + dims + rounds its corners while scene B springs in from the chosen direction with a soft directional shadow. Standalone scene-pair component (from/to ReactNode props), spring-driven for a natural settle.",
1432
- useWhen: "Apple-flavored product reels, app-walkthrough cuts, premium showcase content where a layered z-feel matters. Especially clean for vertical (TikTok/Reels) flows when paired with `up`. Avoid for frenetic montages \u2014 the spring settle reads as deliberate and would slow the cut.",
1433
- pairsWith: ["mesh-gradient-bg", "lower-third", "parallax"],
1434
- avoidWith: ["glitch-cut", "chromatic-aberration-wipe", "directional-wipe"],
1435
- tier: "standard",
1436
- useCase: ["transition"],
1437
- tags: ["transition", "push", "spatial", "spring", "ios", "standalone"],
1438
- mood: ["cinematic", "corporate", "minimal"],
1439
- paramsSchema: paramsSchema12,
1440
- propDefaults: { direction: "up" },
1441
- createPresentation: (params) => spatialPush(params),
1442
- examples: [
1443
- { name: "push-up", mood: ["tech-demo"], params: { direction: "up" } },
1444
- { name: "push-left", mood: ["tech-demo"], params: { direction: "left" } }
1445
- ],
1446
- textParam: null,
1447
- subtextParam: null,
1448
- tokens: [],
1449
- durationInFrames: 30,
1450
- fps: 30,
1451
- width: 1920,
1452
- height: 1080,
1453
- preview: { thumbnailFrame: 15, mode: "loop" }
1454
- };
1455
-
1456
- // src/transitions/swipe-transition-wipe/config.ts
1457
- import { z as z13 } from "zod";
1458
- var paramsSchema13 = z13.object({
1459
- direction: z13.enum(["left", "right"]).default("left").describe("Swipe direction the OLD scene exits toward."),
1460
- dimStrength: z13.number().min(0).max(1).default(0.4).describe("Darkening of the outgoing scene as it leaves."),
1461
- parallaxFactor: z13.number().min(0).max(1).default(0.6).describe("Parallax lag on the incoming scene. 0 = rigid slide.")
1462
- }).passthrough();
1463
- var config13 = {
1464
- id: "swipe-transition-wipe",
1465
- component: SwipeTransitionWipe,
1466
- name: "Swipe Transition Wipe",
1467
- category: "transitions",
1468
- kind: "transition",
1469
- version: "0.2.1",
1470
- intent: "reveal-mask",
1471
- description: "Polished swipe between two scenes with parallax + dim of the off-screen scene. Standalone showcase component with default gradient panels \u2014 pass sceneA/sceneB ReactNodes to use real content.",
1472
- useWhen: "Demo/showcase reels, podcast clip transitions where you want a designed look. The default colored gradient panels are nice for comparison videos.",
1473
- pairsWith: ["mesh-gradient-bg", "lower-third"],
1474
- avoidWith: ["frosted-glass-wipe"],
1475
- tier: "standard",
1476
- useCase: ["transition"],
1477
- tags: ["transition", "swipe", "wipe", "parallax", "showcase", "standalone"],
1478
- mood: ["cinematic", "corporate"],
1479
- paramsSchema: paramsSchema13,
1480
- propDefaults: { direction: "left", dimStrength: 0.4, parallaxFactor: 0.6 },
1481
- createPresentation: (params) => swipeTransitionWipe(params),
1482
- examples: [
1483
- { name: "designer-default", mood: ["tech-demo", "corporate"], params: { direction: "left", dimStrength: 0.4, parallaxFactor: 0.6 } }
1484
- ],
1485
- textParam: "labelA",
1486
- subtextParam: "labelB",
1487
- tokens: [
1488
- { propPath: "colorA1", cssVar: "--cf-accent", fallback: ACCENT, brandKitPath: "colors.accent" },
1489
- { propPath: "colorB1", cssVar: "--cf-accent-2", fallback: VIOLET, brandKitPath: "colors.accentMuted" }
1490
- ],
1491
- durationInFrames: 30,
1492
- fps: 30,
1493
- width: 1920,
1494
- height: 1080,
1495
- preview: { thumbnailFrame: 15, mode: "loop" }
1496
- };
1497
-
1498
- // src/transitions/zoom-through/config.ts
1499
- import { z as z14 } from "zod";
1500
- var paramsSchema14 = z14.object({
1501
- zoomPoint: z14.object({
1502
- x: z14.number().min(0).max(1).default(0.5).describe("Horizontal focal point, 0\u20131 normalized."),
1503
- y: z14.number().min(0).max(1).default(0.5).describe("Vertical focal point, 0\u20131 normalized.")
1504
- }).default({ x: 0.5, y: 0.5 }).describe('Where the camera "flies through". Defaults to center.')
1505
- }).passthrough();
1506
- var config14 = {
1507
- id: "zoom-through",
1508
- component: ZoomThrough,
1509
- name: "Zoom Through",
1510
- category: "transitions",
1511
- kind: "transition",
1512
- version: "0.1.0",
1513
- intent: "reveal-mask",
1514
- description: 'Camera "zooms through" the exiting scene into the entering scene. The exit scales up and fades; the enter starts large (zoomed in) and scales down to 1. Creates the illusion of flying through one frame into the next.',
1515
- useWhen: 'Travel/journey beats, "into the next chapter" moments, dramatic perspective shifts. Pair with a focal point that has visual interest (a doorway, a logo, an eye). Avoid for fast cuts \u2014 the zoom takes time.',
1516
- pairsWith: ["parallax", "cinematic-title", "light-leak"],
1517
- avoidWith: ["glitch-cut", "directional-wipe"],
1518
- tier: "standard",
1519
- useCase: ["transition", "emphasis"],
1520
- tags: ["transition", "zoom", "camera", "fly-through", "perspective"],
1521
- mood: ["cinematic", "editorial"],
1522
- paramsSchema: paramsSchema14,
1523
- propDefaults: { zoomPoint: { x: 0.5, y: 0.5 } },
1524
- createPresentation: (params) => zoomThrough(params),
1525
- examples: [
1526
- { name: "center-fly", mood: ["cinematic"], params: { zoomPoint: { x: 0.5, y: 0.5 } } },
1527
- { name: "top-corner", mood: ["cinematic"], params: { zoomPoint: { x: 0.3, y: 0.3 } } }
1528
- ],
1529
- textParam: null,
1530
- subtextParam: null,
1531
- tokens: [],
1532
- durationInFrames: 45,
1533
- fps: 30,
1534
- width: 1920,
1535
- height: 1080,
1536
- preview: { thumbnailFrame: 22, mode: "loop", defaultExample: "center-fly" }
1537
- };
1538
-
1539
- // src/transitions/zoom-through-transition/config.ts
1540
- import { z as z15 } from "zod";
1541
- var paramsSchema15 = z15.object({
1542
- targetScale: z15.number().min(2).max(60).default(20).describe("Final scale factor. 20 = aggressive zoom-through; 8\u201310 = gentler push."),
1543
- transformOrigin: z15.string().default("center center").describe('CSS transform-origin for the zoom (e.g. "center center", "30% 70%"). Off-center origins produce a parallax-like push.'),
1544
- background: z15.string().default("transparent").describe("Background behind the zooming content. Transparent lets the destination scene show through as the content fades; set a color for a hard flash handoff."),
1545
- beatFrames: z15.number().int().min(10).max(150).default(45).describe("Frames the zoom-through takes \u2014 its own beat, independent of the hosting sequence duration."),
1546
- speed: z15.number().min(0.25).max(4).default(1).describe("Playback speed multiplier.")
1547
- }).passthrough();
1548
- var config15 = {
1549
- id: "zoom-through-transition",
1550
- component: ZoomThroughTransition,
1551
- name: "Zoom Through Transition",
1552
- category: "transitions",
1553
- kind: "component",
1554
- version: "0.1.2",
1555
- intent: "zoom-through",
1556
- description: "Aggressive zoom-through: a single content node (passed as children) scales up from 1\xD7 to a high target scale while fading at the end, leaving the background color filling the frame. Use as the bridge between two scenes \u2014 the next scene mounts after this primitive ends. Distinct from the cueframe-native `zoom-through` TransitionPresentation, which interpolates two real scenes.",
1557
- useWhen: 'Hero hand-offs where you want a logo / emblem / object to "consume" the frame before the next scene begins, product-launch trailers, opening title pushes. Use the existing `zoom-through` TransitionSeries presentation when you want to interpolate between two real scenes instead.',
1558
- pairsWith: ["product-launch-trailer", "mesh-gradient-bg", "shimmer-sweep"],
1559
- avoidWith: ["zoom-through", "glitch-cut"],
1560
- tier: "standard",
1561
- useCase: ["transition"],
1562
- tags: ["transition", "zoom", "push", "hero", "standalone"],
1563
- mood: ["cinematic", "aggressive", "tech-demo"],
1564
- paramsSchema: paramsSchema15,
1565
- propDefaults: {
1566
- targetScale: 20,
1567
- transformOrigin: "center center",
1568
- background: "transparent",
1569
- beatFrames: 45,
1570
- speed: 1
1571
- },
1572
- examples: [
1573
- {
1574
- name: "scene-handoff",
1575
- mood: ["cinematic"],
1576
- params: { targetScale: 20, transformOrigin: "center center", background: "transparent", beatFrames: 45 },
1577
- description: "Content zooms through and fades, revealing the scene beneath \u2014 the default hand-off."
1578
- },
1579
- {
1580
- name: "off-center-push",
1581
- mood: ["aggressive", "tech-demo"],
1582
- params: { targetScale: 30, transformOrigin: "30% 70%", background: "#0a0a0a" },
1583
- description: "Steeper scale plus off-center origin for a parallax-flavored push into a dark scene."
1584
- }
1585
- ],
1586
- textParam: null,
1587
- subtextParam: null,
1588
- tokens: [
1589
- { propPath: "background", cssVar: "--cf-surface", fallback: "white", brandKitPath: "colors.surface" }
1590
- ],
1591
- durationInFrames: 60,
1592
- fps: 30,
1593
- width: 1920,
1594
- height: 1080,
1595
- preview: { thumbnailFrame: 40, mode: "oneshot", defaultExample: "logo-consume" }
1596
- };
1597
-
1598
- // src/transitions/index.ts
1599
- var catalog = [
1600
- config,
1601
- config2,
1602
- config3,
1603
- config4,
1604
- config5,
1605
- config6,
1606
- config7,
1607
- config8,
1608
- config9,
1609
- config10,
1610
- config11,
1611
- config12,
1612
- config13,
1613
- config14,
1614
- config15
1615
- ];
1616
-
1617
- export {
1618
- lightLeak,
1619
- LightLeak,
1620
- inkWipe,
1621
- InkWipe,
1622
- lumaMatte,
1623
- LumaMatte,
1624
- glitchCut,
1625
- GlitchCut,
1626
- zoomThrough,
1627
- ZoomThrough,
1628
- morph,
1629
- Morph,
1630
- chromaticAberrationWipe,
1631
- ChromaticAberrationWipe,
1632
- directionalWipe,
1633
- DirectionalWipe,
1634
- swipeTransitionWipe,
1635
- SwipeTransitionWipe,
1636
- gridPixelateWipe,
1637
- GridPixelateWipe,
1638
- kineticTypeMask,
1639
- KineticTypeMask,
1640
- ZoomThroughTransition,
1641
- CodeDiffWipe,
1642
- catalog
1643
- };
1644
- //# sourceMappingURL=chunk-5MWGAEGQ.js.map