@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,1435 +0,0 @@
1
- import {
2
- ACCENT,
3
- ACCENT_STRONG,
4
- BG,
5
- BORDER_SOFT,
6
- DANGER,
7
- SUCCESS,
8
- SURFACE,
9
- TEAL,
10
- TEXT_HI,
11
- TEXT_MUTED,
12
- VIOLET,
13
- WARNING
14
- } from "./chunk-3OMURV6Q.js";
15
- import {
16
- FitText
17
- } from "./chunk-ROV2ODWC.js";
18
-
19
- // src/effects/blur/index.tsx
20
- import { useCurrentFrame, useVideoConfig, interpolate } from "remotion";
21
- import { jsx } from "react/jsx-runtime";
22
- var Blur = ({
23
- type = "gaussian",
24
- radius = 4,
25
- animateFrom,
26
- animateTo,
27
- easing,
28
- children,
29
- style
30
- }) => {
31
- const frame = useCurrentFrame();
32
- const { durationInFrames } = useVideoConfig();
33
- let currentRadius;
34
- if (animateFrom !== void 0 && animateTo !== void 0) {
35
- currentRadius = interpolate(
36
- frame,
37
- [0, durationInFrames - 1],
38
- [animateFrom, animateTo],
39
- { extrapolateLeft: "clamp", extrapolateRight: "clamp", easing }
40
- );
41
- } else {
42
- currentRadius = radius;
43
- }
44
- const filterValue = currentRadius > 0 ? `blur(${currentRadius}px)` : "none";
45
- return /* @__PURE__ */ jsx(
46
- "div",
47
- {
48
- style: {
49
- width: "100%",
50
- height: "100%",
51
- filter: filterValue,
52
- // Motion blur simulation: scale slightly in one direction
53
- ...type === "motion" && currentRadius > 0 ? { transform: `scaleX(${1 + currentRadius * 5e-3})` } : {},
54
- ...style
55
- },
56
- children
57
- }
58
- );
59
- };
60
-
61
- // src/effects/color-grade/index.tsx
62
- import { jsx as jsx2 } from "react/jsx-runtime";
63
- var PRESET_FILTERS = {
64
- none: { brightness: 1, contrast: 1, saturation: 1, hue: 0, sepia: 0 },
65
- vintage: { brightness: 1.05, contrast: 1.1, saturation: 0.7, hue: -5, sepia: 0.3 },
66
- cinematic: { brightness: 0.95, contrast: 1.3, saturation: 0.85, hue: 0, sepia: 0 },
67
- "bleach-bypass": { brightness: 1.1, contrast: 1.4, saturation: 0.3, hue: 0, sepia: 0 },
68
- sepia: { brightness: 1, contrast: 1.05, saturation: 0.8, hue: 0, sepia: 0.8 },
69
- cool: { brightness: 1, contrast: 1.05, saturation: 0.9, hue: 10, sepia: 0 },
70
- warm: { brightness: 1.05, contrast: 1.05, saturation: 1.1, hue: -10, sepia: 0.1 }
71
- };
72
- var ColorGrade = ({
73
- preset = "none",
74
- brightness: brightnessProp,
75
- contrast: contrastProp,
76
- saturation: saturationProp,
77
- hue: hueProp,
78
- temperature = 0,
79
- intensity = 1,
80
- children,
81
- style
82
- }) => {
83
- const base = PRESET_FILTERS[preset];
84
- const k = Math.max(0, Math.min(1, intensity));
85
- const toNeutral = (v) => 1 + (v - 1) * k;
86
- const brightness = toNeutral(brightnessProp ?? base.brightness);
87
- const contrast = toNeutral(contrastProp ?? base.contrast);
88
- const saturation = toNeutral(saturationProp ?? base.saturation);
89
- const hue = ((hueProp ?? base.hue) + temperature) * k;
90
- const sepia = base.sepia * k;
91
- const filters = [];
92
- if (brightness !== 1) filters.push(`brightness(${brightness})`);
93
- if (contrast !== 1) filters.push(`contrast(${contrast})`);
94
- if (saturation !== 1) filters.push(`saturate(${saturation})`);
95
- if (hue !== 0) filters.push(`hue-rotate(${hue}deg)`);
96
- if (sepia > 0) filters.push(`sepia(${sepia})`);
97
- const filterString = filters.length > 0 ? filters.join(" ") : "none";
98
- return /* @__PURE__ */ jsx2(
99
- "div",
100
- {
101
- style: {
102
- width: "100%",
103
- height: "100%",
104
- filter: filterString,
105
- ...style
106
- },
107
- children
108
- }
109
- );
110
- };
111
-
112
- // src/effects/grain/index.tsx
113
- import { useRef, useEffect } from "react";
114
- import { useCurrentFrame as useCurrentFrame2, useVideoConfig as useVideoConfig2 } from "remotion";
115
- import { jsx as jsx3 } from "react/jsx-runtime";
116
- function seededRandom(seed) {
117
- let s = seed;
118
- return () => {
119
- s = (s * 16807 + 0) % 2147483647;
120
- return (s - 1) / 2147483646;
121
- };
122
- }
123
- var Grain = ({
124
- intensity = 0.3,
125
- speed = 1,
126
- blendMode = "overlay",
127
- monochrome = true,
128
- style
129
- }) => {
130
- const canvasRef = useRef(null);
131
- const frame = useCurrentFrame2();
132
- const { width, height } = useVideoConfig2();
133
- const scale = 0.25;
134
- const w = Math.ceil(width * scale);
135
- const h = Math.ceil(height * scale);
136
- useEffect(() => {
137
- const canvas = canvasRef.current;
138
- if (!canvas) return;
139
- const ctx = canvas.getContext("2d");
140
- if (!ctx) return;
141
- canvas.width = w;
142
- canvas.height = h;
143
- const grainFrame = Math.floor(frame * speed);
144
- const rand = seededRandom(grainFrame * 7919 + 1);
145
- const imageData = ctx.createImageData(w, h);
146
- const data = imageData.data;
147
- for (let i = 0; i < data.length; i += 4) {
148
- if (monochrome) {
149
- const v = rand() * 255;
150
- data[i] = v;
151
- data[i + 1] = v;
152
- data[i + 2] = v;
153
- } else {
154
- data[i] = rand() * 255;
155
- data[i + 1] = rand() * 255;
156
- data[i + 2] = rand() * 255;
157
- }
158
- data[i + 3] = intensity * 255;
159
- }
160
- ctx.putImageData(imageData, 0, 0);
161
- }, [frame, speed, w, h, intensity, monochrome]);
162
- return /* @__PURE__ */ jsx3(
163
- "canvas",
164
- {
165
- ref: canvasRef,
166
- style: {
167
- position: "absolute",
168
- top: 0,
169
- left: 0,
170
- width: "100%",
171
- height: "100%",
172
- pointerEvents: "none",
173
- mixBlendMode: blendMode,
174
- imageRendering: "pixelated",
175
- ...style
176
- }
177
- }
178
- );
179
- };
180
-
181
- // src/effects/parallax/index.tsx
182
- import { useCurrentFrame as useCurrentFrame3, useVideoConfig as useVideoConfig3, interpolate as interpolate2, Img } from "remotion";
183
- import { jsx as jsx4 } from "react/jsx-runtime";
184
- var Parallax = ({
185
- src,
186
- zoom = 1.2,
187
- pan = "left",
188
- speed = 1,
189
- easing,
190
- style
191
- }) => {
192
- const frame = useCurrentFrame3();
193
- const { durationInFrames } = useVideoConfig3();
194
- const progress = interpolate2(
195
- frame,
196
- [0, durationInFrames],
197
- [0, 1 * speed],
198
- { extrapolateRight: "clamp", easing }
199
- );
200
- const scale = interpolate2(progress, [0, 1], [1, zoom]);
201
- let translateX = 0;
202
- let translateY = 0;
203
- const maxOffset = (zoom - 1) * 50;
204
- switch (pan) {
205
- case "left":
206
- translateX = interpolate2(progress, [0, 1], [0, -maxOffset]);
207
- break;
208
- case "right":
209
- translateX = interpolate2(progress, [0, 1], [0, maxOffset]);
210
- break;
211
- case "up":
212
- translateY = interpolate2(progress, [0, 1], [0, -maxOffset]);
213
- break;
214
- case "down":
215
- translateY = interpolate2(progress, [0, 1], [0, maxOffset]);
216
- break;
217
- case "none":
218
- break;
219
- }
220
- return /* @__PURE__ */ jsx4(
221
- "div",
222
- {
223
- style: {
224
- width: "100%",
225
- height: "100%",
226
- overflow: "hidden",
227
- ...style
228
- },
229
- children: /* @__PURE__ */ jsx4(
230
- Img,
231
- {
232
- src,
233
- style: {
234
- width: "100%",
235
- height: "100%",
236
- objectFit: "cover",
237
- transform: `scale(${scale}) translate(${translateX}%, ${translateY}%)`,
238
- transformOrigin: "center center"
239
- }
240
- }
241
- )
242
- }
243
- );
244
- };
245
-
246
- // src/effects/particles/index.tsx
247
- import { useRef as useRef2, useEffect as useEffect2 } from "react";
248
- import { useCurrentFrame as useCurrentFrame4, useVideoConfig as useVideoConfig4 } from "remotion";
249
- import { jsx as jsx5 } from "react/jsx-runtime";
250
- function seededRandom2(seed) {
251
- let s = seed;
252
- return () => {
253
- s = (s * 16807 + 0) % 2147483647;
254
- return (s - 1) / 2147483646;
255
- };
256
- }
257
- var PRESET_DEFAULTS = {
258
- dust: { size: 2, color: `${TEXT_HI}cc`, gravity: 0, wind: 0.1 },
259
- bokeh: { size: 20, color: `${TEXT_HI}4d`, gravity: -0.02, wind: 0 },
260
- snow: { size: 4, color: TEXT_HI, gravity: 0.3, wind: 0.15 },
261
- sparks: { size: 3, color: ACCENT, gravity: -0.5, wind: 0 },
262
- embers: { size: 5, color: ACCENT_STRONG, gravity: -0.2, wind: 0.05 },
263
- fireflies: { size: 4, color: WARNING, gravity: 0, wind: 0 }
264
- };
265
- var Particles = ({
266
- preset = "dust",
267
- count = 60,
268
- speed = 1,
269
- size: sizeProp,
270
- color: colorProp,
271
- opacity = 0.6,
272
- wind: windProp,
273
- gravity: gravityProp,
274
- style
275
- }) => {
276
- const canvasRef = useRef2(null);
277
- const particlesRef = useRef2(null);
278
- const frame = useCurrentFrame4();
279
- const { width, height, fps } = useVideoConfig4();
280
- const defaults = PRESET_DEFAULTS[preset];
281
- const pSize = sizeProp ?? defaults.size;
282
- const pColor = colorProp ?? defaults.color;
283
- const pWind = windProp ?? defaults.wind;
284
- const pGravity = gravityProp ?? defaults.gravity;
285
- if (!particlesRef.current) {
286
- const rand = seededRandom2(42);
287
- particlesRef.current = Array.from({ length: count }, () => ({
288
- x: rand() * width,
289
- y: rand() * height,
290
- vx: (rand() - 0.5) * 2,
291
- vy: (rand() - 0.5) * 2,
292
- size: pSize * (0.5 + rand()),
293
- alpha: 0.3 + rand() * 0.7,
294
- phase: rand() * Math.PI * 2
295
- }));
296
- }
297
- useEffect2(() => {
298
- const canvas = canvasRef.current;
299
- if (!canvas || !particlesRef.current) return;
300
- const ctx = canvas.getContext("2d");
301
- if (!ctx) return;
302
- canvas.width = width;
303
- canvas.height = height;
304
- ctx.clearRect(0, 0, width, height);
305
- const dt = speed / fps;
306
- for (const p of particlesRef.current) {
307
- const time = frame * dt;
308
- const x = ((p.x + (p.vx + pWind * 60) * time) % width + width) % width;
309
- const y = ((p.y + (p.vy + pGravity * 60) * time) % height + height) % height;
310
- let alpha = p.alpha * opacity;
311
- if (preset === "fireflies") {
312
- alpha *= 0.5 + 0.5 * Math.sin(time * 3 + p.phase);
313
- }
314
- ctx.globalAlpha = alpha;
315
- ctx.fillStyle = pColor;
316
- if (preset === "bokeh") {
317
- ctx.beginPath();
318
- ctx.arc(x, y, p.size, 0, Math.PI * 2);
319
- ctx.fill();
320
- } else if (preset === "sparks" || preset === "embers") {
321
- const gradient = ctx.createRadialGradient(x, y, 0, x, y, p.size);
322
- gradient.addColorStop(0, pColor);
323
- gradient.addColorStop(1, "transparent");
324
- ctx.fillStyle = gradient;
325
- ctx.beginPath();
326
- ctx.arc(x, y, p.size, 0, Math.PI * 2);
327
- ctx.fill();
328
- } else {
329
- ctx.beginPath();
330
- ctx.arc(x, y, p.size, 0, Math.PI * 2);
331
- ctx.fill();
332
- }
333
- }
334
- }, [frame, width, height, fps, speed, pColor, pWind, pGravity, opacity, preset, pSize]);
335
- return /* @__PURE__ */ jsx5(
336
- "canvas",
337
- {
338
- ref: canvasRef,
339
- style: {
340
- position: "absolute",
341
- top: 0,
342
- left: 0,
343
- width: "100%",
344
- height: "100%",
345
- pointerEvents: "none",
346
- ...style
347
- }
348
- }
349
- );
350
- };
351
-
352
- // src/effects/pulsing-indicator/index.tsx
353
- import { useCurrentFrame as useCurrentFrame5 } from "remotion";
354
- import { jsx as jsx6, jsxs } from "react/jsx-runtime";
355
- function PulsingIndicator({
356
- color = SUCCESS,
357
- size = 16,
358
- period = 8,
359
- speed = 1,
360
- background = "white",
361
- className
362
- }) {
363
- const frame = useCurrentFrame5() * speed;
364
- const wave = Math.sin(frame / period) * 0.5 + 0.5;
365
- const dotScale = 0.9 + wave * 0.2;
366
- const dotOpacity = 0.6 + wave * 0.4;
367
- const ringPeriod = period * Math.PI * 2;
368
- const phase = frame % ringPeriod / ringPeriod;
369
- const ringScale = 1 + phase * 1.6;
370
- const ringOpacity = (1 - phase) * 0.7;
371
- return /* @__PURE__ */ jsx6(
372
- "div",
373
- {
374
- className,
375
- style: {
376
- position: "absolute",
377
- inset: 0,
378
- display: "flex",
379
- alignItems: "center",
380
- justifyContent: "center",
381
- background
382
- },
383
- children: /* @__PURE__ */ jsxs(
384
- "div",
385
- {
386
- style: {
387
- position: "relative",
388
- width: size,
389
- height: size
390
- },
391
- children: [
392
- /* @__PURE__ */ jsx6(
393
- "div",
394
- {
395
- style: {
396
- position: "absolute",
397
- inset: 0,
398
- borderRadius: "50%",
399
- background: color,
400
- opacity: ringOpacity,
401
- transform: `scale(${ringScale})`,
402
- transformOrigin: "center",
403
- willChange: "transform, opacity"
404
- }
405
- }
406
- ),
407
- /* @__PURE__ */ jsx6(
408
- "div",
409
- {
410
- style: {
411
- position: "absolute",
412
- inset: 0,
413
- borderRadius: "50%",
414
- background: color,
415
- opacity: dotOpacity,
416
- transform: `scale(${dotScale})`,
417
- transformOrigin: "center",
418
- willChange: "transform, opacity"
419
- }
420
- }
421
- )
422
- ]
423
- }
424
- )
425
- }
426
- );
427
- }
428
-
429
- // src/effects/spotlight-card/index.tsx
430
- import { interpolate as interpolate3, useCurrentFrame as useCurrentFrame6, useVideoConfig as useVideoConfig5 } from "remotion";
431
- import { Fragment, jsx as jsx7, jsxs as jsxs2 } from "react/jsx-runtime";
432
- var FONT_FAMILY = "inherit";
433
- function cursorAt(frame, cardWidth, cardHeight, durationInFrames) {
434
- const t = frame / durationInFrames * Math.PI * 2;
435
- const x = cardWidth / 2 + Math.sin(t) * (cardWidth * 0.42);
436
- const y = cardHeight / 2 + Math.sin(t * 2) * (cardHeight * 0.32);
437
- return { x, y };
438
- }
439
- function SpotlightCard({
440
- title = "Spotlight Card",
441
- body = "Soft radial light follows the cursor, picking out the microborder.",
442
- cardWidth = 520,
443
- cardHeight = 320,
444
- glowSize = 600,
445
- glowOpacity = 0.08,
446
- background = BG,
447
- cardColor = SURFACE,
448
- textColor = TEXT_HI,
449
- mutedColor = TEXT_MUTED,
450
- speed = 1,
451
- className,
452
- children
453
- }) {
454
- const frame = useCurrentFrame6() * speed;
455
- const { durationInFrames } = useVideoConfig5();
456
- const cursor = cursorAt(
457
- Math.max(0, frame - 1),
458
- cardWidth,
459
- cardHeight,
460
- durationInFrames
461
- );
462
- const cardOpacity = interpolate3(frame, [0, 12], [0, 1], {
463
- extrapolateLeft: "clamp",
464
- extrapolateRight: "clamp"
465
- });
466
- const CONTENT_PADDING = 36;
467
- const contentWidth = Math.max(80, cardWidth - CONTENT_PADDING * 2);
468
- const bodyWidth = Math.min(360, contentWidth);
469
- const surfaceGlow = `radial-gradient(${glowSize}px circle at ${cursor.x}px ${cursor.y}px, rgba(255,255,255,${glowOpacity}), transparent 40%)`;
470
- const borderGlow = `radial-gradient(${glowSize * 0.6}px circle at ${cursor.x}px ${cursor.y}px, rgba(255,255,255,0.35), transparent 40%)`;
471
- return /* @__PURE__ */ jsx7(
472
- "div",
473
- {
474
- className,
475
- style: {
476
- position: "absolute",
477
- inset: 0,
478
- background,
479
- display: "flex",
480
- alignItems: "center",
481
- justifyContent: "center",
482
- fontFamily: FONT_FAMILY
483
- },
484
- children: /* @__PURE__ */ jsx7(
485
- "div",
486
- {
487
- style: {
488
- position: "relative",
489
- width: cardWidth,
490
- height: cardHeight,
491
- borderRadius: 20,
492
- padding: 1,
493
- background: borderGlow,
494
- opacity: cardOpacity
495
- },
496
- children: /* @__PURE__ */ jsxs2(
497
- "div",
498
- {
499
- style: {
500
- position: "relative",
501
- width: "100%",
502
- height: "100%",
503
- borderRadius: 19,
504
- background: cardColor,
505
- overflow: "hidden"
506
- },
507
- children: [
508
- /* @__PURE__ */ jsx7(
509
- "div",
510
- {
511
- style: {
512
- position: "absolute",
513
- inset: 0,
514
- background: surfaceGlow,
515
- pointerEvents: "none"
516
- }
517
- }
518
- ),
519
- /* @__PURE__ */ jsx7(
520
- "div",
521
- {
522
- style: {
523
- position: "relative",
524
- padding: 36,
525
- display: "flex",
526
- flexDirection: "column",
527
- gap: 12,
528
- height: "100%",
529
- justifyContent: "flex-end"
530
- },
531
- children: children ?? /* @__PURE__ */ jsxs2(Fragment, { children: [
532
- /* @__PURE__ */ jsx7(
533
- FitText,
534
- {
535
- maxFontSize: 28,
536
- maxWidth: contentWidth,
537
- maxLines: 2,
538
- fontFamily: FONT_FAMILY,
539
- fontWeight: 700,
540
- letterSpacing: "-0.02em",
541
- style: { color: textColor },
542
- children: title
543
- }
544
- ),
545
- /* @__PURE__ */ jsx7(
546
- FitText,
547
- {
548
- maxFontSize: 16,
549
- maxWidth: bodyWidth,
550
- maxLines: 4,
551
- fontFamily: FONT_FAMILY,
552
- fontWeight: 400,
553
- style: { color: mutedColor, lineHeight: 1.5 },
554
- children: body
555
- }
556
- )
557
- ] })
558
- }
559
- )
560
- ]
561
- }
562
- )
563
- }
564
- )
565
- }
566
- );
567
- }
568
-
569
- // src/effects/spring-pop-in/index.tsx
570
- import { spring, useCurrentFrame as useCurrentFrame7, useVideoConfig as useVideoConfig6 } from "remotion";
571
- import { jsx as jsx8 } from "react/jsx-runtime";
572
- var FONT_FAMILY2 = "inherit";
573
- function DefaultChild() {
574
- return /* @__PURE__ */ jsx8(
575
- "div",
576
- {
577
- style: {
578
- width: 280,
579
- height: 280,
580
- borderRadius: 32,
581
- background: `linear-gradient(135deg, ${ACCENT} 0%, ${VIOLET} 100%)`,
582
- display: "flex",
583
- alignItems: "center",
584
- justifyContent: "center",
585
- color: TEXT_HI,
586
- fontFamily: FONT_FAMILY2,
587
- fontSize: 56,
588
- fontWeight: 700,
589
- letterSpacing: "-0.04em",
590
- border: `1px solid ${BORDER_SOFT}`
591
- },
592
- children: "Pop!"
593
- }
594
- );
595
- }
596
- function SpringPopIn({
597
- children,
598
- damping = 12,
599
- mass = 1,
600
- stiffness = 100,
601
- delayInFrames = 0,
602
- speed = 1,
603
- background = "transparent",
604
- className
605
- }) {
606
- const frame = useCurrentFrame7() * speed;
607
- const { fps } = useVideoConfig6();
608
- const scale = spring({
609
- fps,
610
- frame: frame - delayInFrames,
611
- config: {
612
- damping,
613
- mass,
614
- stiffness
615
- }
616
- });
617
- return /* @__PURE__ */ jsx8(
618
- "div",
619
- {
620
- className,
621
- style: {
622
- position: "absolute",
623
- inset: 0,
624
- display: "flex",
625
- alignItems: "center",
626
- justifyContent: "center",
627
- background
628
- },
629
- children: /* @__PURE__ */ jsx8(
630
- "div",
631
- {
632
- style: {
633
- transform: `scale(${scale})`,
634
- transformOrigin: "center",
635
- willChange: "transform"
636
- },
637
- children: children ?? /* @__PURE__ */ jsx8(DefaultChild, {})
638
- }
639
- )
640
- }
641
- );
642
- }
643
-
644
- // src/effects/success-confetti/index.tsx
645
- import {
646
- interpolate as interpolate4,
647
- random,
648
- spring as spring2,
649
- useCurrentFrame as useCurrentFrame8,
650
- useVideoConfig as useVideoConfig7
651
- } from "remotion";
652
- import { jsx as jsx9, jsxs as jsxs3 } from "react/jsx-runtime";
653
- function SuccessConfetti({
654
- count = 60,
655
- colors = [ACCENT_STRONG, SUCCESS, TEAL, WARNING, VIOLET],
656
- originX = 0.5,
657
- originY = 0.5,
658
- gravity = 0.4,
659
- velocity = 12,
660
- text = "Merged!",
661
- textColor = SURFACE,
662
- background = TEXT_HI,
663
- seed = "remocn",
664
- speed = 1,
665
- className
666
- }) {
667
- const frame = useCurrentFrame8() * speed;
668
- const { fps, durationInFrames } = useVideoConfig7();
669
- const width = 1280;
670
- const height = 720;
671
- const cx = width * originX;
672
- const cy = height * originY;
673
- const textPop = spring2({
674
- frame: frame - 4,
675
- fps,
676
- config: { damping: 9, stiffness: 160, mass: 0.7 }
677
- });
678
- const textScale = interpolate4(textPop, [0, 1], [0.6, 1]);
679
- const textOpacity = interpolate4(frame, [4, 14], [0, 1], {
680
- extrapolateLeft: "clamp",
681
- extrapolateRight: "clamp"
682
- });
683
- const textExit = interpolate4(
684
- frame,
685
- [durationInFrames - 12, durationInFrames],
686
- [1, 0],
687
- { extrapolateLeft: "clamp", extrapolateRight: "clamp" }
688
- );
689
- const particles = Array.from({ length: count }, (_, i) => {
690
- const seedKey = `${seed}:${i}`;
691
- const angle = random(`${seedKey}:angle`) * Math.PI * 2;
692
- const speed2 = velocity * (0.6 + random(`${seedKey}:speed`) * 0.8);
693
- const colorIndex = Math.floor(random(`${seedKey}:color`) * colors.length);
694
- const color = colors[colorIndex] ?? colors[0];
695
- const size = 6 + random(`${seedKey}:size`) * 8;
696
- const rotationSpeed = (random(`${seedKey}:rot`) - 0.5) * 16;
697
- const initialRotation = random(`${seedKey}:irot`) * 360;
698
- const isCircle = random(`${seedKey}:shape`) > 0.6;
699
- const lifeOffset = Math.floor(random(`${seedKey}:delay`) * 4);
700
- const f = Math.max(0, frame - lifeOffset);
701
- const x = cx + Math.cos(angle) * speed2 * f;
702
- const y = cy + Math.sin(angle) * speed2 * f + 0.5 * gravity * f * f;
703
- const rotation = initialRotation + rotationSpeed * f;
704
- const opacity = interpolate4(
705
- frame,
706
- [0, 4, durationInFrames - 20, durationInFrames],
707
- [0, 1, 1, 0],
708
- { extrapolateLeft: "clamp", extrapolateRight: "clamp" }
709
- );
710
- return {
711
- x,
712
- y,
713
- rotation,
714
- color,
715
- size,
716
- isCircle,
717
- opacity,
718
- key: i
719
- };
720
- });
721
- return /* @__PURE__ */ jsxs3(
722
- "div",
723
- {
724
- className,
725
- style: {
726
- position: "absolute",
727
- inset: 0,
728
- background,
729
- overflow: "hidden",
730
- fontFamily: "inherit"
731
- },
732
- children: [
733
- /* @__PURE__ */ jsx9(
734
- "svg",
735
- {
736
- width,
737
- height,
738
- viewBox: `0 0 ${width} ${height}`,
739
- style: { position: "absolute", inset: 0 },
740
- children: particles.map(
741
- (p) => p.isCircle ? /* @__PURE__ */ jsx9(
742
- "circle",
743
- {
744
- cx: p.x,
745
- cy: p.y,
746
- r: p.size / 2,
747
- fill: p.color,
748
- opacity: p.opacity
749
- },
750
- p.key
751
- ) : /* @__PURE__ */ jsx9(
752
- "rect",
753
- {
754
- x: -p.size / 2,
755
- y: -p.size / 2,
756
- width: p.size,
757
- height: p.size * 0.5,
758
- rx: 1,
759
- fill: p.color,
760
- opacity: p.opacity,
761
- transform: `translate(${p.x} ${p.y}) rotate(${p.rotation})`
762
- },
763
- p.key
764
- )
765
- )
766
- }
767
- ),
768
- text ? /* @__PURE__ */ jsx9(
769
- "div",
770
- {
771
- style: {
772
- position: "absolute",
773
- inset: 0,
774
- display: "flex",
775
- alignItems: "center",
776
- justifyContent: "center",
777
- pointerEvents: "none"
778
- },
779
- children: /* @__PURE__ */ jsx9(
780
- "span",
781
- {
782
- style: {
783
- fontSize: 96,
784
- fontWeight: 700,
785
- letterSpacing: "-0.04em",
786
- color: textColor,
787
- transform: `scale(${textScale})`,
788
- opacity: Math.min(textOpacity, textExit)
789
- },
790
- children: text
791
- }
792
- )
793
- }
794
- ) : null
795
- ]
796
- }
797
- );
798
- }
799
-
800
- // src/effects/vignette/index.tsx
801
- import { jsx as jsx10 } from "react/jsx-runtime";
802
- var Vignette = ({
803
- intensity = 0.5,
804
- spread = 0.5,
805
- shape = "ellipse",
806
- color = "black",
807
- style
808
- }) => {
809
- const innerStop = Math.round(spread * 70);
810
- const outerStop = Math.round(70 + spread * 30);
811
- const shapeValue = shape === "circle" ? "circle" : "ellipse";
812
- const gradient = `radial-gradient(${shapeValue} at center, transparent ${innerStop}%, ${color} ${outerStop}%)`;
813
- return /* @__PURE__ */ jsx10(
814
- "div",
815
- {
816
- style: {
817
- position: "absolute",
818
- top: 0,
819
- left: 0,
820
- width: "100%",
821
- height: "100%",
822
- pointerEvents: "none",
823
- background: gradient,
824
- opacity: intensity,
825
- ...style
826
- }
827
- }
828
- );
829
- };
830
-
831
- // src/effects/blur/config.ts
832
- import { z } from "zod";
833
- var paramsSchema = z.object({
834
- type: z.enum(["gaussian", "motion"]).default("gaussian").describe("Blur type. gaussian: standard. motion: adds slight horizontal stretch."),
835
- radius: z.number().min(0).max(40).default(4).describe("Static blur radius. Used when animateFrom/animateTo are not set."),
836
- animateFrom: z.number().min(0).max(40).optional().describe("Starting blur radius. Pair with animateTo to animate."),
837
- animateTo: z.number().min(0).max(40).optional().describe("Ending blur radius. Pair with animateFrom to animate."),
838
- speed: z.number().min(0.25).max(4).default(1).describe("Playback speed multiplier.")
839
- }).passthrough();
840
- var config = {
841
- id: "blur",
842
- component: Blur,
843
- name: "Blur",
844
- category: "effects",
845
- kind: "component",
846
- version: "0.1.0",
847
- // Same wrapper contract as color-grade — see that config's note. Caveat the
848
- // wrap mount inherits: `animateFrom/To` interpolate over the BODY's frame
849
- // span (there is no Sequence around a wrap mount), not the effect window.
850
- effectPlacement: "wrap",
851
- intent: "depth-blur",
852
- description: "Animatable blur wrapper. Wrap any child to apply CSS filter blur, optionally animating the radius across the duration (focus pull, reveal, transition out). Motion blur variant adds a slight scaleX stretch for a horizontal-pan feel.",
853
- useWhen: "Focus pulls (animateFrom: 12, animateTo: 0), out-of-focus backgrounds (static high radius), transitional fade to next scene (animateTo: 20). Pair with Img/Video/Composition. Avoid wrapping text \u2014 use blur-reveal instead.",
854
- pairsWith: ["parallax", "vignette", "mesh-gradient-bg"],
855
- avoidWith: ["blur-reveal"],
856
- tier: "standard",
857
- useCase: ["transition", "emphasis"],
858
- tags: ["effect", "blur", "gaussian", "focus", "depth", "animatable"],
859
- mood: ["cinematic", "soft", "editorial"],
860
- paramsSchema,
861
- propDefaults: { type: "gaussian", radius: 4, speed: 1 },
862
- examples: [
863
- {
864
- name: "focus-pull",
865
- mood: ["cinematic"],
866
- params: { type: "gaussian", animateFrom: 12, animateTo: 0, speed: 1 }
867
- },
868
- {
869
- name: "static-bg-blur",
870
- mood: ["soft"],
871
- params: { type: "gaussian", radius: 8, speed: 1 }
872
- },
873
- {
874
- name: "motion-stretch",
875
- mood: ["cinematic"],
876
- params: { type: "motion", animateFrom: 0, animateTo: 16, speed: 1 }
877
- }
878
- ],
879
- textParam: null,
880
- subtextParam: null,
881
- tokens: [],
882
- durationInFrames: 60,
883
- fps: 30,
884
- width: 1920,
885
- height: 1080,
886
- preview: { thumbnailFrame: 8, mode: "oneshot", defaultExample: "focus-pull" }
887
- };
888
-
889
- // src/effects/color-grade/config.ts
890
- import { z as z2 } from "zod";
891
- var paramsSchema2 = z2.object({
892
- preset: z2.enum(["vintage", "cinematic", "bleach-bypass", "sepia", "cool", "warm", "none"]).default("none").describe(
893
- "Built-in look. Override with brightness/contrast/saturation/hue/temperature for fine control."
894
- ),
895
- brightness: z2.number().min(0).max(2).optional().describe("Brightness multiplier. Overrides preset."),
896
- contrast: z2.number().min(0).max(2).optional().describe("Contrast multiplier. Overrides preset."),
897
- saturation: z2.number().min(0).max(2).optional().describe("Saturation multiplier. 0 = grayscale."),
898
- hue: z2.number().min(-180).max(180).optional().describe("Hue rotation in degrees."),
899
- temperature: z2.number().min(-30).max(30).default(0).describe("Color temperature shift. Positive = warm; negative = cool."),
900
- intensity: z2.number().min(0).max(1).default(1).describe("Grade strength 0..1 (default 1). Scales every filter delta toward neutral \u2014 1 = full preset, 0 = no grade. Use ~0.6 for a mild anchor over a talking head so a strong preset does not shift skin tones.")
901
- }).passthrough();
902
- var config2 = {
903
- id: "color-grade",
904
- component: ColorGrade,
905
- name: "Color Grade",
906
- category: "effects",
907
- kind: "component",
908
- version: "0.1.0",
909
- // A filter WRAPPER: CSS `filter` only touches the element's own subtree, so
910
- // the render must mount this AROUND the footage (WrapEffects), never as a
911
- // stacked layer — stacked, it filters an empty div and grades nothing.
912
- effectPlacement: "wrap",
913
- intent: "color-grade",
914
- description: "CSS-filter-based color grading wrapper. Seven presets cover the common looks (vintage, cinematic, bleach-bypass, sepia, cool, warm, none) and per-channel overrides are available for fine-tuning. Wrap any media \u2014 Img, Video, full Composition.",
915
- useWhen: 'Match footage from different sources, establish mood, age archival material. The "cinematic" preset is the safest starting point; tune temperature for warm/cool shifts. Avoid stacking color-grades.',
916
- pairsWith: ["parallax", "vignette", "grain"],
917
- avoidWith: [],
918
- tier: "standard",
919
- useCase: ["grade"],
920
- tags: ["effect", "color", "grade", "lut", "filter", "preset"],
921
- mood: ["cinematic", "editorial"],
922
- paramsSchema: paramsSchema2,
923
- propDefaults: { preset: "none", temperature: 0 },
924
- examples: [
925
- {
926
- name: "cinematic-look",
927
- mood: ["cinematic"],
928
- params: { preset: "cinematic", temperature: 0 }
929
- },
930
- {
931
- name: "warm-vintage",
932
- mood: ["editorial"],
933
- params: { preset: "vintage", temperature: 5 }
934
- },
935
- {
936
- name: "cool-tech",
937
- mood: ["tech-demo"],
938
- params: { preset: "cool", temperature: -10 }
939
- }
940
- ],
941
- textParam: null,
942
- subtextParam: null,
943
- tokens: [],
944
- durationInFrames: 60,
945
- fps: 30,
946
- width: 1920,
947
- height: 1080,
948
- preview: { thumbnailFrame: 30, mode: "oneshot", defaultExample: "cinematic-look" }
949
- };
950
-
951
- // src/effects/grain/config.ts
952
- import { z as z3 } from "zod";
953
- var paramsSchema3 = z3.object({
954
- intensity: z3.number().min(0).max(1).default(0.3).describe("Grain opacity. 0.2\u20130.4 is the sweet spot \u2014 heavier feels dirty."),
955
- speed: z3.number().min(0.25).max(4).default(1).describe("Animation speed. Higher = faster jitter."),
956
- blendMode: z3.enum(["overlay", "multiply", "screen", "soft-light", "hard-light", "normal"]).default("overlay").describe("CSS blend mode against the underlying frame."),
957
- monochrome: z3.boolean().default(true).describe("Pure luminance grain (true) vs RGB color noise (false).")
958
- }).passthrough();
959
- var config3 = {
960
- id: "grain",
961
- component: Grain,
962
- name: "Grain",
963
- category: "effects",
964
- kind: "component",
965
- version: "0.1.0",
966
- intent: "film-grain",
967
- description: "Animated film-grain overlay. Canvas-based monochrome (or color) noise that brings analog warmth to digital footage. Downsampled internally for performance \u2014 grain doesn't need full resolution.",
968
- useWhen: 'Add cinematic texture to anything that looks too clean. Pair with vignette + color-grade for the full "film" treatment. Avoid combining with particles (already textural) or stacking multiple grains.',
969
- pairsWith: ["vignette", "color-grade", "parallax", "light-leak"],
970
- avoidWith: ["particles"],
971
- tier: "standard",
972
- useCase: ["grade"],
973
- tags: ["effect", "grain", "film", "noise", "texture", "analog"],
974
- mood: ["cinematic", "editorial"],
975
- paramsSchema: paramsSchema3,
976
- propDefaults: { intensity: 0.3, speed: 1, blendMode: "overlay", monochrome: true },
977
- examples: [
978
- {
979
- name: "subtle-film",
980
- mood: ["cinematic"],
981
- params: { intensity: 0.25, speed: 1, blendMode: "overlay", monochrome: true }
982
- },
983
- {
984
- name: "heavy-vintage",
985
- mood: ["cinematic", "editorial"],
986
- params: { intensity: 0.5, speed: 0.8, blendMode: "soft-light", monochrome: true }
987
- }
988
- ],
989
- textParam: null,
990
- subtextParam: null,
991
- tokens: [],
992
- durationInFrames: 60,
993
- fps: 30,
994
- width: 1920,
995
- height: 1080,
996
- preview: { thumbnailFrame: 30, mode: "loop", defaultExample: "subtle-film" }
997
- };
998
-
999
- // src/effects/parallax/config.ts
1000
- import { z as z4 } from "zod";
1001
- var paramsSchema4 = z4.object({
1002
- src: z4.string().url().describe("Image URL. Pair with high-resolution sources \u2014 the zoom amplifies aliasing."),
1003
- zoom: z4.number().min(1).max(2).default(1.2).describe("End zoom factor. 1.2\u20131.4 reads as a gentle Ken Burns; >1.5 starts feeling aggressive."),
1004
- pan: z4.enum(["left", "right", "up", "down", "none"]).default("left").describe("Direction of the slow pan."),
1005
- speed: z4.number().min(0.25).max(4).default(1).describe("Playback speed multiplier.")
1006
- }).passthrough();
1007
- var config4 = {
1008
- id: "parallax",
1009
- component: Parallax,
1010
- name: "Parallax",
1011
- category: "effects",
1012
- kind: "component",
1013
- version: "0.1.0",
1014
- intent: "parallax-pan",
1015
- description: 'Ken-Burns-style slow zoom + pan over a still image. Adds depth and "the camera is moving" feel to static photography. Five pan directions plus none-for-zoom-only.',
1016
- useWhen: 'Photo backgrounds in a montage, biographical clips ("a young Einstein..."), travel/landscape moments, anywhere a still image would feel static. Best at the canonical 1.2\xD7\u20131.4\xD7 zoom range.',
1017
- pairsWith: ["vignette", "color-grade", "lower-third", "cinematic-title"],
1018
- avoidWith: ["ken-burns"],
1019
- tier: "standard",
1020
- useCase: ["background"],
1021
- tags: ["effect", "ken-burns", "parallax", "pan", "zoom", "image", "cinematic"],
1022
- mood: ["cinematic", "editorial", "soft"],
1023
- paramsSchema: paramsSchema4,
1024
- propDefaults: { zoom: 1.2, pan: "left", speed: 1 },
1025
- examples: [
1026
- {
1027
- name: "gentle-pan-left",
1028
- mood: ["cinematic"],
1029
- params: { src: "https://images.unsplash.com/photo-1506744038136-46273834b3fb?w=1920", zoom: 1.3, pan: "left", speed: 1 }
1030
- },
1031
- {
1032
- name: "zoom-only",
1033
- mood: ["editorial"],
1034
- params: { src: "https://images.unsplash.com/photo-1506744038136-46273834b3fb?w=1920", zoom: 1.4, pan: "none", speed: 1 }
1035
- }
1036
- ],
1037
- textParam: null,
1038
- subtextParam: null,
1039
- tokens: [],
1040
- durationInFrames: 180,
1041
- fps: 30,
1042
- width: 1920,
1043
- height: 1080,
1044
- preview: { thumbnailFrame: 90, mode: "oneshot", defaultExample: "gentle-pan-left" }
1045
- };
1046
-
1047
- // src/effects/particles/config.ts
1048
- import { z as z5 } from "zod";
1049
- var paramsSchema5 = z5.object({
1050
- preset: z5.enum(["dust", "bokeh", "snow", "sparks", "embers", "fireflies"]).default("dust").describe(
1051
- "Particle aesthetic. dust: drifting motes. bokeh: soft glowing circles. snow: falling crystals. sparks: rising glow. embers: warm rising. fireflies: flicker."
1052
- ),
1053
- count: z5.number().int().min(5).max(300).default(60).describe("Particle count. 30\u2013100 is the sweet spot."),
1054
- size: z5.number().min(1).max(60).optional().describe("Override base particle size in px. Defaults vary per preset."),
1055
- color: z5.string().optional().describe("Override particle color. Defaults vary per preset."),
1056
- opacity: z5.number().min(0).max(1).default(0.6).describe("Overall opacity multiplier."),
1057
- wind: z5.number().min(-1).max(1).optional().describe("Horizontal drift force. Positive = right."),
1058
- gravity: z5.number().min(-1).max(1).optional().describe("Vertical force. Positive = down."),
1059
- speed: z5.number().min(0.25).max(4).default(1).describe("Playback speed multiplier.")
1060
- }).passthrough();
1061
- var config5 = {
1062
- id: "particles",
1063
- component: Particles,
1064
- name: "Particles",
1065
- category: "effects",
1066
- kind: "component",
1067
- version: "0.1.1",
1068
- intent: "particle-overlay",
1069
- description: "Configurable ambient particle layer rendered via Canvas. Six presets cover the most common atmospheric needs (dust, bokeh, snow, sparks, embers, fireflies) and each is tunable via overrides for size, color, count, wind, and gravity.",
1070
- useWhen: "Add atmosphere to a scene that feels too sterile. Bokeh for warmth, dust for cinematic film grain extras, snow for winter mood, sparks for reveals, fireflies for whimsy. Avoid combining two preset types \u2014 feels muddled.",
1071
- pairsWith: ["parallax", "vignette", "color-grade", "cinematic-title", "mesh-gradient-bg"],
1072
- avoidWith: ["grain"],
1073
- tier: "niche",
1074
- useCase: ["background"],
1075
- tags: ["effect", "particles", "atmosphere", "bokeh", "dust", "snow", "fireflies", "sparks"],
1076
- mood: ["cinematic", "soft", "playful"],
1077
- paramsSchema: paramsSchema5,
1078
- propDefaults: { preset: "dust", count: 60, opacity: 0.6, speed: 1 },
1079
- examples: [
1080
- {
1081
- name: "soft-bokeh",
1082
- mood: ["cinematic", "soft"],
1083
- params: { preset: "bokeh", count: 40, opacity: 0.5, speed: 1 }
1084
- },
1085
- {
1086
- name: "falling-snow",
1087
- mood: ["cinematic"],
1088
- params: { preset: "snow", count: 120, opacity: 0.8, speed: 1 }
1089
- },
1090
- {
1091
- name: "fireflies-summer",
1092
- mood: ["playful", "soft"],
1093
- params: { preset: "fireflies", count: 30, opacity: 0.9, speed: 0.8 }
1094
- }
1095
- ],
1096
- textParam: null,
1097
- subtextParam: null,
1098
- tokens: [],
1099
- durationInFrames: 180,
1100
- fps: 30,
1101
- width: 1920,
1102
- height: 1080,
1103
- preview: { thumbnailFrame: 90, mode: "loop", defaultExample: "soft-bokeh" }
1104
- };
1105
-
1106
- // src/effects/pulsing-indicator/config.ts
1107
- import { z as z6 } from "zod";
1108
- var paramsSchema6 = z6.object({
1109
- color: z6.string().default(DANGER).describe('Pulse dot color. Red is canonical for "live" / "recording".'),
1110
- size: z6.number().min(8).max(64).default(16).describe("Diameter of the inner dot in pixels at 1920\xD71080."),
1111
- period: z6.number().min(20).max(180).default(60).describe("Frames per full pulse cycle. 60 frames = 2 seconds at 30fps."),
1112
- speed: z6.number().min(0.25).max(4).default(1).describe("Playback speed multiplier \u2014 overrides perceived period."),
1113
- background: z6.string().optional().describe("Optional background color behind the indicator.")
1114
- }).passthrough();
1115
- var config6 = {
1116
- id: "pulsing-indicator",
1117
- component: PulsingIndicator,
1118
- name: "Pulsing Indicator",
1119
- category: "effects",
1120
- kind: "component",
1121
- version: "0.1.1",
1122
- intent: "particle-overlay",
1123
- description: 'Small pulsing dot \u2014 the canonical "LIVE", "RECORDING", or "ACTIVE" indicator. A solid dot in the center, surrounded by a ring of decaying outer pulses radiating outward.',
1124
- useWhen: 'Live streaming overlays, recording badges, "you are here" indicators in a UI walkthrough, status pings. Pair with a tiny text label ("LIVE") for clarity. Avoid for any moment that needs the eye elsewhere \u2014 the pulse is hypnotic.',
1125
- pairsWith: ["lower-third", "toast-notification", "typewriter"],
1126
- avoidWith: [],
1127
- tier: "standard",
1128
- useCase: ["emphasis"],
1129
- tags: ["effect", "pulse", "indicator", "live", "badge", "status", "loop"],
1130
- mood: ["breaking-news", "tech-demo", "minimal"],
1131
- paramsSchema: paramsSchema6,
1132
- propDefaults: { color: DANGER, size: 16, period: 60, speed: 1 },
1133
- examples: [
1134
- {
1135
- name: "live-red",
1136
- mood: ["breaking-news"],
1137
- params: { color: DANGER, size: 16, period: 60, speed: 1 }
1138
- },
1139
- {
1140
- name: "recording-amber",
1141
- mood: ["tech-demo"],
1142
- params: { color: WARNING, size: 14, period: 50, speed: 1.2 }
1143
- }
1144
- ],
1145
- textParam: null,
1146
- subtextParam: null,
1147
- tokens: [
1148
- { propPath: "color", cssVar: "--cf-accent", fallback: DANGER, brandKitPath: "colors.accent" }
1149
- ],
1150
- durationInFrames: 60,
1151
- fps: 30,
1152
- width: 200,
1153
- height: 200,
1154
- preview: { thumbnailFrame: 30, mode: "loop", defaultExample: "live-red" }
1155
- };
1156
-
1157
- // src/effects/spotlight-card/config.ts
1158
- import { z as z7 } from "zod";
1159
- var paramsSchema7 = z7.object({
1160
- title: z7.string().max(140).default("Spotlight Card").describe(
1161
- "Card headline. Keep \u22646 words; the spotlight effect is the hero, not the copy. Auto-fits (shrinks + wraps to 2 lines) to the card."
1162
- ),
1163
- body: z7.string().max(360).default("Soft radial light follows the cursor, picking out the microborder.").describe(
1164
- "Supporting copy beneath the title. 1\u20132 sentences max \u2014 content sits in a small footer block. Auto-fits (shrinks + wraps to 4 lines)."
1165
- ),
1166
- cardWidth: z7.number().min(200).max(1600).default(520).describe(
1167
- "Card width in pixels at 1920\xD71080. 480\u2013640 is the sweet spot for a single-card hero."
1168
- ),
1169
- cardHeight: z7.number().min(120).max(900).default(320).describe(
1170
- "Card height in pixels. 280\u2013360 reads like a product card; >500 starts feeling like a panel."
1171
- ),
1172
- glowSize: z7.number().min(100).max(2e3).default(600).describe(
1173
- "Radius of the moving radial spotlight in pixels. Larger = softer, more diffuse light."
1174
- ),
1175
- glowOpacity: z7.number().min(0).max(1).default(0.08).describe(
1176
- "Surface glow strength. 0.06\u20130.12 reads as subtle premium; >0.2 looks like a flashlight."
1177
- ),
1178
- background: z7.string().default(BG).describe("Frame background behind the card."),
1179
- cardColor: z7.string().default(SURFACE).describe("Card surface fill."),
1180
- textColor: z7.string().default(TEXT_HI).describe("Title color."),
1181
- mutedColor: z7.string().default(TEXT_MUTED).describe("Body/secondary text color."),
1182
- speed: z7.number().min(0.25).max(4).default(1).describe("Cursor-tour playback speed multiplier.")
1183
- }).passthrough();
1184
- var config7 = {
1185
- id: "spotlight-card",
1186
- component: SpotlightCard,
1187
- name: "Spotlight Card",
1188
- category: "effects",
1189
- kind: "component",
1190
- version: "0.1.1",
1191
- intent: "highlight-area",
1192
- description: 'Premium product-card primitive with a soft radial spotlight that drifts across the surface on a slow Lissajous path. The cursor-following light picks out a 1px microborder so the card always has a "hovered" feel even on still frames. Linear/Vercel/Stripe-style hero card.',
1193
- useWhen: 'Hero cards, feature callouts, "what we shipped" beats, premium SaaS product showcases on a dark background. Avoid on light backgrounds (the radial highlight needs darkness to read) and avoid stacking multiple spotlight cards in one frame \u2014 the wandering lights compete.',
1194
- pairsWith: ["mesh-gradient-bg", "dynamic-grid", "grain", "kinetic-type"],
1195
- avoidWith: ["vignette"],
1196
- tier: "recommended",
1197
- useCase: ["emphasis", "full-scene"],
1198
- tags: ["effect", "card", "spotlight", "cursor", "glow", "premium", "saas"],
1199
- mood: ["tech-demo", "minimal", "corporate", "editorial"],
1200
- paramsSchema: paramsSchema7,
1201
- propDefaults: {
1202
- title: "Spotlight Card",
1203
- body: "Soft radial light follows the cursor, picking out the microborder.",
1204
- cardWidth: 520,
1205
- cardHeight: 320,
1206
- glowSize: 600,
1207
- glowOpacity: 0.08,
1208
- background: BG,
1209
- cardColor: SURFACE,
1210
- textColor: TEXT_HI,
1211
- mutedColor: TEXT_MUTED,
1212
- speed: 1
1213
- },
1214
- examples: [
1215
- {
1216
- name: "product-hero",
1217
- mood: ["tech-demo", "minimal"],
1218
- params: { title: "Now Generally Available", body: "Ship faster with sub-second cold starts and zero infrastructure to manage.", glowSize: 600, glowOpacity: 0.1 },
1219
- description: "Default product-launch card on dark bg."
1220
- },
1221
- {
1222
- name: "subtle-feature",
1223
- mood: ["corporate", "minimal"],
1224
- params: { title: "Audit Logs", body: "Every action, every actor, every change.", glowSize: 480, glowOpacity: 0.06, cardWidth: 480, cardHeight: 280 },
1225
- description: "Smaller, calmer feature card for a grid of three."
1226
- },
1227
- {
1228
- name: "editorial-quote",
1229
- mood: ["editorial"],
1230
- params: { title: `"Honestly, the best DX we've seen."`, body: "Lead Engineer, Linear", glowSize: 700, glowOpacity: 0.12, cardWidth: 640, cardHeight: 360, textColor: TEXT_HI, mutedColor: TEXT_MUTED }
1231
- }
1232
- ],
1233
- textParam: "title",
1234
- subtextParam: "body",
1235
- tokens: [
1236
- { propPath: "background", cssVar: "--cf-bg", fallback: BG, brandKitPath: "colors.background" },
1237
- { propPath: "cardColor", cssVar: "--cf-surface", fallback: SURFACE, brandKitPath: "colors.surface" },
1238
- { propPath: "textColor", cssVar: "--cf-fg", fallback: TEXT_HI, brandKitPath: "colors.textOnSurface" },
1239
- { propPath: "mutedColor", cssVar: "--cf-muted", fallback: TEXT_MUTED, brandKitPath: "colors.textMuted" }
1240
- ],
1241
- durationInFrames: 240,
1242
- fps: 30,
1243
- width: 1920,
1244
- height: 1080,
1245
- preview: { thumbnailFrame: 90, mode: "loop", defaultExample: "product-hero" }
1246
- };
1247
-
1248
- // src/effects/spring-pop-in/config.ts
1249
- import { z as z8 } from "zod";
1250
- var paramsSchema8 = z8.object({
1251
- damping: z8.number().min(2).max(40).default(12).describe("Spring damping. Lower = more bounce; higher = faster settle."),
1252
- mass: z8.number().min(0.1).max(5).default(1).describe("Spring mass. Higher feels heavier and overshoots more."),
1253
- stiffness: z8.number().min(20).max(400).default(140).describe("Spring stiffness. Higher = snappier response."),
1254
- delayInFrames: z8.number().int().min(0).max(120).default(0).describe("Frames to wait before the entrance starts."),
1255
- speed: z8.number().min(0.25).max(4).default(1).describe("Playback speed multiplier."),
1256
- background: z8.string().default("transparent").describe("Stage color behind the popping child. Keep transparent when compositing over a scene.")
1257
- }).passthrough();
1258
- var config8 = {
1259
- id: "spring-pop-in",
1260
- component: SpringPopIn,
1261
- name: "Spring Pop In",
1262
- category: "effects",
1263
- kind: "component",
1264
- version: "0.1.2",
1265
- intent: "particle-overlay",
1266
- description: "Wrapper that pops any child element into view with spring-driven scale. The child appears with a satisfying overshoot bounce and settles. Composable with any primitive that needs a more interesting entrance than a plain fade.",
1267
- useWhen: 'Wrap around badges, icons, callouts, modal dialogs, anything that should "arrive" with weight. Avoid wrapping text that has its own entrance animation (typewriter, blur-reveal) \u2014 double-animation.',
1268
- pairsWith: ["toast-notification", "pulsing-indicator", "success-confetti"],
1269
- avoidWith: ["blur-reveal", "tracking-in"],
1270
- tier: "standard",
1271
- useCase: ["emphasis"],
1272
- tags: ["effect", "spring", "pop-in", "wrapper", "entrance", "bounce"],
1273
- mood: ["playful", "tech-demo", "soft"],
1274
- paramsSchema: paramsSchema8,
1275
- propDefaults: { damping: 12, mass: 1, stiffness: 140, delayInFrames: 0, speed: 1, background: "transparent" },
1276
- examples: [
1277
- {
1278
- name: "default-bounce",
1279
- mood: ["playful"],
1280
- params: { damping: 12, mass: 1, stiffness: 140, delayInFrames: 0, speed: 1 }
1281
- },
1282
- {
1283
- name: "gentle-arrive",
1284
- mood: ["soft"],
1285
- params: { damping: 18, mass: 0.8, stiffness: 100, delayInFrames: 0, speed: 1 }
1286
- },
1287
- {
1288
- name: "snappy-pop",
1289
- mood: ["tech-demo"],
1290
- params: { damping: 8, mass: 0.6, stiffness: 220, delayInFrames: 0, speed: 1.1 }
1291
- }
1292
- ],
1293
- textParam: null,
1294
- subtextParam: null,
1295
- tokens: [],
1296
- durationInFrames: 60,
1297
- fps: 30,
1298
- width: 1920,
1299
- height: 1080,
1300
- preview: { thumbnailFrame: 30, mode: "oneshot", defaultExample: "default-bounce" }
1301
- };
1302
-
1303
- // src/effects/success-confetti/config.ts
1304
- import { z as z9 } from "zod";
1305
- var paramsSchema9 = z9.object({
1306
- count: z9.number().int().min(10).max(400).default(120).describe("Number of confetti particles. 80\u2013150 reads festive without overwhelming."),
1307
- colors: z9.array(z9.string()).min(1).default([DANGER, WARNING, SUCCESS, TEAL, VIOLET]).describe("Particle colors to sample from. 4\u20136 distinct hues works best."),
1308
- originX: z9.number().min(0).max(1).default(0.5).describe("Horizontal origin of the burst, normalized 0\u20131."),
1309
- originY: z9.number().min(0).max(1).default(0.5).describe("Vertical origin of the burst, normalized 0\u20131."),
1310
- gravity: z9.number().min(0).max(2).default(0.8).describe("Downward acceleration. 0 = particles drift; 1+ = particles fall fast."),
1311
- velocity: z9.number().min(1).max(40).default(14).describe("Initial burst speed. Higher = particles travel further."),
1312
- text: z9.string().optional().describe('Optional centered text on top of the confetti (e.g., "\u2713 Done").'),
1313
- textColor: z9.string().default(SURFACE).describe("Color of the optional text."),
1314
- background: z9.string().optional().describe("Optional full-frame background behind the burst."),
1315
- seed: z9.string().default("cueframe").describe("Deterministic seed for the particle distribution."),
1316
- speed: z9.number().min(0.25).max(4).default(1).describe("Playback speed multiplier.")
1317
- }).passthrough();
1318
- var config9 = {
1319
- id: "success-confetti",
1320
- component: SuccessConfetti,
1321
- name: "Success Confetti",
1322
- category: "effects",
1323
- kind: "component",
1324
- version: "0.1.1",
1325
- intent: "particle-overlay",
1326
- description: "Particle burst from a configurable origin point \u2014 confetti, success celebration, achievement unlock. Colors cycle through a palette; gravity and velocity tune the physics.",
1327
- useWhen: 'Demo end cards, "you did it!" beats, deal closed, level cleared, milestone hit. Overlay on top of any other content. Avoid for serious/editorial moments \u2014 confetti is loud.',
1328
- pairsWith: ["blur-reveal", "shimmer-sweep", "kinetic-type"],
1329
- avoidWith: ["glitch-cut", "matrix-decode"],
1330
- tier: "niche",
1331
- useCase: ["emphasis"],
1332
- tags: ["effect", "confetti", "celebration", "particles", "success", "achievement"],
1333
- mood: ["playful", "breaking-news"],
1334
- paramsSchema: paramsSchema9,
1335
- propDefaults: { count: 120, colors: [DANGER, WARNING, SUCCESS, TEAL, VIOLET], originX: 0.5, originY: 0.5, gravity: 0.8, velocity: 14, textColor: SURFACE, seed: "cueframe", speed: 1 },
1336
- examples: [
1337
- {
1338
- name: "classic-burst",
1339
- mood: ["playful"],
1340
- params: { count: 120, originX: 0.5, originY: 0.5, gravity: 0.8, velocity: 14, seed: "cueframe", speed: 1 }
1341
- },
1342
- {
1343
- name: "with-text",
1344
- mood: ["playful"],
1345
- params: { count: 100, originX: 0.5, originY: 0.4, gravity: 0.7, velocity: 12, text: "\u2713 Done", textColor: BG, seed: "win", speed: 1 }
1346
- }
1347
- ],
1348
- textParam: "text",
1349
- subtextParam: null,
1350
- tokens: [
1351
- { propPath: "textColor", cssVar: "--cf-text", fallback: SURFACE, brandKitPath: "colors.text" }
1352
- ],
1353
- durationInFrames: 90,
1354
- fps: 30,
1355
- width: 1920,
1356
- height: 1080,
1357
- preview: { thumbnailFrame: 18, mode: "oneshot", defaultExample: "classic-burst" }
1358
- };
1359
-
1360
- // src/effects/vignette/config.ts
1361
- import { z as z10 } from "zod";
1362
- var paramsSchema10 = z10.object({
1363
- intensity: z10.number().min(0).max(1).default(0.5).describe("Edge darkness. 0.4\u20130.6 reads as cinematic; 0.8+ feels like a tunnel."),
1364
- spread: z10.number().min(0).max(1).default(0.5).describe("How far from the edges the vignette starts. Lower = covers more of the frame."),
1365
- shape: z10.enum(["ellipse", "circle"]).default("ellipse").describe("Gradient shape. Ellipse follows the frame ratio; circle is centered round."),
1366
- color: z10.string().default("black").describe("Vignette color. Black is canonical; dark colors can tint the frame edges.")
1367
- }).passthrough();
1368
- var config10 = {
1369
- id: "vignette",
1370
- component: Vignette,
1371
- name: "Vignette",
1372
- category: "effects",
1373
- kind: "component",
1374
- version: "0.1.0",
1375
- intent: "depth-blur",
1376
- description: "Edge darkening overlay. Pure CSS radial-gradient \u2014 no canvas needed. Pulls focus to the center of the frame and adds cinematic depth.",
1377
- useWhen: "Anywhere you want to focus the eye toward the center: speaker close-ups, hero text frames, dramatic moments. Avoid combining with letterbox at high intensity (frame gets too dark) or for moments that need full peripheral visibility.",
1378
- pairsWith: ["parallax", "color-grade", "grain", "cinematic-title"],
1379
- avoidWith: [],
1380
- tier: "standard",
1381
- useCase: ["grade"],
1382
- tags: ["effect", "vignette", "edge", "darken", "focus", "cinematic"],
1383
- mood: ["cinematic", "editorial", "minimal"],
1384
- paramsSchema: paramsSchema10,
1385
- propDefaults: { intensity: 0.5, spread: 0.5, shape: "ellipse", color: "black" },
1386
- examples: [
1387
- {
1388
- name: "cinematic",
1389
- mood: ["cinematic"],
1390
- params: { intensity: 0.6, spread: 0.4, shape: "ellipse", color: "black" }
1391
- },
1392
- {
1393
- name: "subtle-focus",
1394
- mood: ["minimal"],
1395
- params: { intensity: 0.3, spread: 0.6, shape: "ellipse", color: "black" }
1396
- }
1397
- ],
1398
- textParam: null,
1399
- subtextParam: null,
1400
- tokens: [],
1401
- durationInFrames: 60,
1402
- fps: 30,
1403
- width: 1920,
1404
- height: 1080,
1405
- preview: { thumbnailFrame: 30, mode: "oneshot", defaultExample: "cinematic" }
1406
- };
1407
-
1408
- // src/effects/index.ts
1409
- var catalog = [
1410
- config,
1411
- config2,
1412
- config3,
1413
- config4,
1414
- config5,
1415
- config6,
1416
- config7,
1417
- config8,
1418
- config9,
1419
- config10
1420
- ];
1421
-
1422
- export {
1423
- Blur,
1424
- ColorGrade,
1425
- Grain,
1426
- Parallax,
1427
- Particles,
1428
- PulsingIndicator,
1429
- SpotlightCard,
1430
- SpringPopIn,
1431
- SuccessConfetti,
1432
- Vignette,
1433
- catalog
1434
- };
1435
- //# sourceMappingURL=chunk-WZFLEGMD.js.map