@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.
- package/LICENSE +661 -0
- package/dist/_members/account-model/testing/conversationStoreContract.d.ts +1 -1
- package/dist/_members/authoring/providers/resourceApi.d.ts +1 -1
- package/dist/_members/authoring/transpileComponent.d.ts +1 -1
- package/dist/_members/cloud-import/CloudImportService.d.ts +35 -0
- package/dist/_members/cloud-import/ImportProvider.d.ts +73 -0
- package/dist/_members/cloud-import/MediaItemPreprocessor.d.ts +27 -0
- package/dist/_members/cloud-import/cloudConfig.d.ts +23 -0
- package/dist/_members/cloud-import/index.d.ts +9 -0
- package/dist/_members/cloud-import/multipartUpload.d.ts +12 -0
- package/dist/_members/composition/ops/compositionOps.d.ts +2 -1
- package/dist/_members/composition/ops/types.d.ts +1 -1
- package/dist/_members/composition/projection/behind-readiness.d.ts +127 -0
- package/dist/_members/composition/projection/index.d.ts +2 -0
- package/dist/_members/composition/projection/reframe-readiness.d.ts +156 -0
- package/dist/_members/composition/timeline/placement.d.ts +1 -1
- package/dist/_members/composition/validators/composition.d.ts +43 -26
- package/dist/_members/composition/validators/render.d.ts +32 -0
- package/dist/_members/composition-ops/index.d.ts +1 -1
- package/dist/_members/composition-ops/opRecorder.d.ts +1 -1
- package/dist/_members/convex-api/api.d.ts +5 -0
- package/dist/_members/convex-api/dataModel.d.ts +6 -0
- package/dist/_members/core/render/compositionRender.d.ts +17 -1
- package/dist/_members/core/render/exportSettings.d.ts +1 -1
- package/dist/_members/core/render/types.d.ts +31 -0
- package/dist/_members/mcp/curation.d.ts +1 -1
- package/dist/_members/plane/conformance.d.ts +1 -1
- package/dist/_members/render-harness/localRender.d.ts +1 -1
- package/dist/animate.js +828 -79187
- package/dist/authoring/build-tools.js +8 -11
- package/dist/authoring/context.js +5 -5
- package/dist/authoring/models.js +1 -2
- package/dist/authoring/prompts.js +1 -1
- package/dist/authoring/tools.js +7 -7
- package/dist/authoring/transpileComponent.js +3 -2220
- package/dist/authoring.js +30 -30
- package/dist/brand-derivation.js +1 -1
- package/dist/chunk-6IU2UQI5.js +107 -0
- package/dist/{chunk-5I7VDCAC.js → chunk-7FO3ZJ43.js} +4 -1
- package/dist/{chunk-N67PDTKQ.js → chunk-ABL557OT.js} +1 -1
- package/dist/{chunk-MC5DLSEV.js → chunk-AP6ZIVAV.js} +15 -15
- package/dist/{chunk-QLAQHR3L.js → chunk-AQBREB5O.js} +1 -1
- package/dist/{chunk-DSNG6WLU.js → chunk-AYVJXDLB.js} +1 -4
- package/dist/{chunk-6CMVBTTP.js → chunk-DK2ODBNT.js} +19 -9
- package/dist/chunk-DSMLHYJ4.js +82 -0
- package/dist/{chunk-BRKJKB33.js → chunk-FYZVH3MC.js} +1 -1
- package/dist/{chunk-MVEE6HEC.js → chunk-GA23TRNR.js} +5 -7
- package/dist/chunk-HCCBDJLW.js +68 -0
- package/dist/{chunk-JRQVPFLF.js → chunk-HY3RIEZW.js} +1 -1
- package/dist/{chunk-OIRUO5P7.js → chunk-JJ6XD7NG.js} +152 -2
- package/dist/{_members/primitives/chunk-IDAL6G3Y.js → chunk-JQMPHKLU.js} +19 -27
- package/dist/{chunk-G3PBH53P.js → chunk-MBCXCJOE.js} +1 -1
- package/dist/{chunk-UEI3NLNK.js → chunk-MHOQTPOB.js} +1 -4
- package/dist/{chunk-37NJ27UU.js → chunk-OCFDUCF4.js} +3 -0
- package/dist/{chunk-WZTTZHNR.js → chunk-OLFOPQCA.js} +12 -9
- package/dist/{chunk-P43IE4WB.js → chunk-P727GZVO.js} +2 -4
- package/dist/{chunk-52AHXNKM.js → chunk-PDYO3DOJ.js} +5 -5
- package/dist/{chunk-S3P5BFFL.js → chunk-PMY24FUD.js} +2 -4
- package/dist/{chunk-ATAF24QG.js → chunk-PODIYN2K.js} +10 -3
- package/dist/chunk-RF7U3SCL.js +606 -0
- package/dist/{chunk-JD77Y2WM.js → chunk-SW336CJP.js} +1 -4
- package/dist/{chunk-TULRCY6U.js → chunk-TOJEXFXL.js} +1 -1
- package/dist/{chunk-ELLSET2N.js → chunk-UHGSZZDI.js} +3 -6
- package/dist/{chunk-M3I5LMAB.js → chunk-UY4SWJVE.js} +1 -1
- package/dist/{chunk-6QJ3V3VS.js → chunk-YX2GSJK7.js} +1 -1
- package/dist/chunk-ZT7MHRQU.js +104 -0
- package/dist/{chunk-NV4I6GJV.js → chunk-ZWMV6DD2.js} +27 -4
- package/dist/cloud-import/multipart.d.ts +1 -0
- package/dist/cloud-import/multipart.js +8 -0
- package/dist/cloud-import.d.ts +1 -0
- package/dist/cloud-import.js +234 -0
- package/dist/compose/renderer.js +19 -22
- package/dist/compose.js +19 -22
- package/dist/composition/graphics-plan.js +3 -3
- package/dist/composition/ops.js +4 -4
- package/dist/composition/primitive-catalog.js +1 -1
- package/dist/composition/projection.js +21 -5
- package/dist/composition/validators.js +6 -4
- package/dist/composition-ops.js +15 -13
- package/dist/composition.js +26 -8
- package/dist/{context-CEAKQ5T7.js → context-YWUZDG5X.js} +5 -5
- package/dist/convex-api/dataModel.d.ts +1 -0
- package/dist/convex-api/dataModel.js +0 -0
- package/dist/convex-api.d.ts +1 -0
- package/dist/convex-api.js +8 -0
- package/dist/core/render.js +3 -3
- package/dist/core/select.js +2 -2
- package/dist/core.js +3 -3
- package/dist/errors.js +1 -1
- package/dist/mcp/adapter.js +2 -5
- package/dist/mcp/server.js +1 -2
- package/dist/mcp.js +2 -95
- package/dist/media-model/media-kind.js +9 -98
- package/dist/media-model/testing.js +1071 -718
- package/dist/nle-export/server.js +328 -130
- package/dist/nle-export/xml.js +5 -22799
- package/dist/nle-export.js +20 -22
- package/dist/primitives/backgrounds.js +2 -3
- package/dist/primitives/captions.js +4 -243
- package/dist/primitives/effects.js +2 -3
- package/dist/primitives/hero-text.js +2 -3
- package/dist/primitives/layouts.js +2 -3
- package/dist/primitives/lib/index.js +8 -10
- package/dist/primitives/lib/preview.js +1 -2
- package/dist/primitives/lib/schema.js +1 -2
- package/dist/primitives/lib/text/fitText.js +1 -2
- package/dist/primitives/lib.js +8 -10
- package/dist/primitives/scenes.js +1 -2
- package/dist/primitives/text.js +2 -3
- package/dist/primitives/ui-blocks.js +4 -5
- package/dist/primitives.js +19 -21
- package/package.json +125 -16
- package/dist/TextureLoader-UQOFUSAP.js +0 -422
- package/dist/VideoTexture-AQWSPIJG.js +0 -62
- package/dist/_members/account-model/index.js +0 -4
- package/dist/_members/account-model/testing/conversationStoreContract.js +0 -168
- package/dist/_members/account-model/testing/index.js +0 -7
- package/dist/_members/account-model/testing/restorePointStoreContract.js +0 -69
- package/dist/_members/account-model/types/index.js +0 -1
- package/dist/_members/account-model/validators/contextFile.js +0 -18
- package/dist/_members/account-model/validators/conversation.js +0 -95
- package/dist/_members/account-model/validators/dashboardInsight.js +0 -16
- package/dist/_members/account-model/validators/index.js +0 -7
- package/dist/_members/account-model/validators/sessionToken.js +0 -49
- package/dist/_members/account-model/validators/uploadToken.js +0 -16
- package/dist/_members/account-model/validators/userSettings.js +0 -12
- package/dist/_members/account-model/validators/workingComposition.js +0 -20
- package/dist/_members/brand-derivation/constants.js +0 -20
- package/dist/_members/brand-derivation/contrastSafe.js +0 -114
- package/dist/_members/brand-derivation/index.js +0 -1
- package/dist/_members/composition/audio/audioMix.js +0 -61
- package/dist/_members/composition/audio/index.js +0 -5
- package/dist/_members/composition/audio/mixStaging.js +0 -195
- package/dist/_members/composition/audio/musicPack.generated.js +0 -136
- package/dist/_members/composition/audio/musicPack.js +0 -36
- package/dist/_members/composition/audio/pack.generated.js +0 -603
- package/dist/_members/composition/audio/pack.js +0 -48
- package/dist/_members/composition/audio/palette.js +0 -134
- package/dist/_members/composition/autozoom/index.js +0 -83
- package/dist/_members/composition/brand-kit.js +0 -45
- package/dist/_members/composition/brief/contract.js +0 -209
- package/dist/_members/composition/color-grade.js +0 -80
- package/dist/_members/composition/depth.js +0 -8
- package/dist/_members/composition/fixtures/index.js +0 -143
- package/dist/_members/composition/fixtures/vaayaErrored.d.ts +0 -25
- package/dist/_members/composition/fixtures/vaayaErrored.js +0 -203
- package/dist/_members/composition/fonts.js +0 -162
- package/dist/_members/composition/graphics-plan/compile.js +0 -221
- package/dist/_members/composition/graphics-plan/index.js +0 -10
- package/dist/_members/composition/graphics-plan/instantiateMotif.js +0 -44
- package/dist/_members/composition/graphics-plan/motion.js +0 -66
- package/dist/_members/composition/graphics-plan/schemas.js +0 -261
- package/dist/_members/composition/graphics-plan/solve.js +0 -145
- package/dist/_members/composition/index.js +0 -5
- package/dist/_members/composition/invariants/clipPlacement.js +0 -69
- package/dist/_members/composition/invariants/composition.js +0 -28
- package/dist/_members/composition/invariants/errors.js +0 -10
- package/dist/_members/composition/invariants/etag.js +0 -38
- package/dist/_members/composition/invariants/ids.js +0 -33
- package/dist/_members/composition/invariants/index.js +0 -9
- package/dist/_members/composition/invariants/keyframes.js +0 -45
- package/dist/_members/composition/invariants/markers.js +0 -29
- package/dist/_members/composition/invariants/time.js +0 -20
- package/dist/_members/composition/invariants/tracks.js +0 -304
- package/dist/_members/composition/ops/compositionOps.js +0 -1056
- package/dist/_members/composition/ops/headlessStore.js +0 -94
- package/dist/_members/composition/ops/index.js +0 -4
- package/dist/_members/composition/ops/selectors.js +0 -118
- package/dist/_members/composition/ops/timeline-word.js +0 -1
- package/dist/_members/composition/ops/transcript.js +0 -77
- package/dist/_members/composition/ops/types.js +0 -16
- package/dist/_members/composition/primitive-catalog/catalogQuery.js +0 -150
- package/dist/_members/composition/primitive-catalog/disabled.js +0 -32
- package/dist/_members/composition/primitive-catalog/generated/meta.js +0 -15161
- package/dist/_members/composition/primitive-catalog/index.js +0 -46
- package/dist/_members/composition/primitive-catalog/paramValidation.js +0 -231
- package/dist/_members/composition/primitive-catalog/projection.js +0 -164
- package/dist/_members/composition/primitive-catalog/types.js +0 -14
- package/dist/_members/composition/projection/behind-placement.js +0 -62
- package/dist/_members/composition/projection/brandKit.js +0 -482
- package/dist/_members/composition/projection/cardTokens.js +0 -209
- package/dist/_members/composition/projection/composition-floor.js +0 -582
- package/dist/_members/composition/projection/cropProjection.js +0 -257
- package/dist/_members/composition/projection/index.js +0 -7
- package/dist/_members/composition/projection/occlusion-budget.js +0 -104
- package/dist/_members/composition/projection/safe-zones.js +0 -99
- package/dist/_members/composition/reframe/aspectLoss.js +0 -115
- package/dist/_members/composition/reframe/coverage.js +0 -62
- package/dist/_members/composition/reframe/derive.js +0 -73
- package/dist/_members/composition/reframe/index.js +0 -109
- package/dist/_members/composition/reframe/kenBurns.js +0 -64
- package/dist/_members/composition/reframe/shotScale.js +0 -176
- package/dist/_members/composition/reframe/trajectory.js +0 -124
- package/dist/_members/composition/timeline/compound.js +0 -134
- package/dist/_members/composition/timeline/index.js +0 -9
- package/dist/_members/composition/timeline/intent.js +0 -228
- package/dist/_members/composition/timeline/keyframes.js +0 -121
- package/dist/_members/composition/timeline/link.js +0 -59
- package/dist/_members/composition/timeline/occupancy.js +0 -36
- package/dist/_members/composition/timeline/placement.js +0 -74
- package/dist/_members/composition/timeline/plan.js +0 -31
- package/dist/_members/composition/timeline/resolve.js +0 -170
- package/dist/_members/composition/timeline/trims.js +0 -278
- package/dist/_members/composition/types/index.js +0 -1
- package/dist/_members/composition/validators/brandKit.js +0 -295
- package/dist/_members/composition/validators/composePlan.js +0 -113
- package/dist/_members/composition/validators/composition.js +0 -703
- package/dist/_members/composition/validators/font.js +0 -34
- package/dist/_members/composition/validators/graphicKinds.js +0 -30
- package/dist/_members/composition/validators/index.js +0 -9
- package/dist/_members/composition/validators/project.js +0 -29
- package/dist/_members/composition/validators/registry.js +0 -41
- package/dist/_members/composition/validators/render.js +0 -139
- package/dist/_members/composition/validators/session.js +0 -37
- package/dist/_members/composition/validators/webhook.js +0 -72
- package/dist/_members/composition-ops/alphaLayers.js +0 -141
- package/dist/_members/composition-ops/index.js +0 -637
- package/dist/_members/composition-ops/materializeGrid.js +0 -99
- package/dist/_members/composition-ops/opRecorder.js +0 -196
- package/dist/_members/composition-ops/recordingStore.js +0 -14
- package/dist/_members/composition-ops/replaceRegion.js +0 -102
- package/dist/_members/composition-ops/testFixtures.js +0 -19
- package/dist/_members/core/index.js +0 -5
- package/dist/_members/core/render/bookends.js +0 -53
- package/dist/_members/core/render/captions.js +0 -127
- package/dist/_members/core/render/compositionRender.js +0 -1249
- package/dist/_members/core/render/deriveTrajectory.js +0 -889
- package/dist/_members/core/render/emphasis.js +0 -16
- package/dist/_members/core/render/eval/cropBox.js +0 -139
- package/dist/_members/core/render/eval/inclusion.js +0 -96
- package/dist/_members/core/render/eval/index.js +0 -146
- package/dist/_members/core/render/eval/metrics.js +0 -94
- package/dist/_members/core/render/exportSettings.js +0 -65
- package/dist/_members/core/render/index.js +0 -20
- package/dist/_members/core/render/mapFaceToPerson.js +0 -73
- package/dist/_members/core/render/types.js +0 -8
- package/dist/_members/core/render/vcam/cameraPath.js +0 -248
- package/dist/_members/core/render/vcam/constants.js +0 -115
- package/dist/_members/core/render/vcam/errorCodes.js +0 -39
- package/dist/_members/core/render/vcam/framing.js +0 -136
- package/dist/_members/core/render/vcam/requiredRegion.js +0 -137
- package/dist/_members/core/render/vcam/shots.js +0 -53
- package/dist/_members/core/render/vcam/subjectSet.js +0 -388
- package/dist/_members/core/select/errorCodes.js +0 -38
- package/dist/_members/core/select/index.js +0 -26
- package/dist/_members/core/select/model.js +0 -18
- package/dist/_members/core/select/select.js +0 -244
- package/dist/_members/core/select/stabilize.js +0 -242
- package/dist/_members/core/types.js +0 -7
- package/dist/_members/errors/index.js +0 -1
- package/dist/_members/errors/registry.js +0 -560
- package/dist/_members/foundation/codes/index.js +0 -31
- package/dist/_members/foundation/index.js +0 -2
- package/dist/_members/foundation/primitives/index.js +0 -5
- package/dist/_members/mcp/adapter.js +0 -771
- package/dist/_members/mcp/burnedNames.js +0 -73
- package/dist/_members/mcp/core.js +0 -390
- package/dist/_members/mcp/curation.js +0 -792
- package/dist/_members/mcp/executor.js +0 -142
- package/dist/_members/mcp/format.js +0 -9
- package/dist/_members/mcp/generated/catalogPreviews.js +0 -95
- package/dist/_members/mcp/generated/harness.js +0 -81
- package/dist/_members/mcp/generated/operations.js +0 -131
- package/dist/_members/mcp/index.js +0 -50
- package/dist/_members/mcp/internalLoopTools.js +0 -109
- package/dist/_members/mcp/prompts.js +0 -45
- package/dist/_members/mcp/resources.js +0 -166
- package/dist/_members/mcp/server.js +0 -340
- package/dist/_members/mcp/wait.js +0 -378
- package/dist/_members/mcp/x402Meta.js +0 -66
- package/dist/_members/media-model/api.js +0 -175
- package/dist/_members/media-model/index.js +0 -1
- package/dist/_members/media-model/media-kind.js +0 -116
- package/dist/_members/media-model/testing/index.js +0 -1
- package/dist/_members/media-model/testing/mediaStoreContract.js +0 -82
- package/dist/_members/media-model/transcriptSearch.js +0 -70
- package/dist/_members/media-model/transcriptSearchCases.json +0 -79
- package/dist/_members/nle-export/compact-timeline.js +0 -73
- package/dist/_members/nle-export/compact-timeline.js.map +0 -1
- package/dist/_members/nle-export/composition-to-input.js +0 -147
- package/dist/_members/nle-export/composition-to-input.js.map +0 -1
- package/dist/_members/nle-export/fcpxml.js +0 -159
- package/dist/_members/nle-export/fcpxml.js.map +0 -1
- package/dist/_members/nle-export/index.js +0 -12
- package/dist/_members/nle-export/index.js.map +0 -1
- package/dist/_members/nle-export/premiere.js +0 -161
- package/dist/_members/nle-export/premiere.js.map +0 -1
- package/dist/_members/nle-export/server/index.js +0 -2
- package/dist/_members/nle-export/server/index.js.map +0 -1
- package/dist/_members/nle-export/server/pack-zip.js +0 -38
- package/dist/_members/nle-export/server/pack-zip.js.map +0 -1
- package/dist/_members/nle-export/srt.js +0 -50
- package/dist/_members/nle-export/srt.js.map +0 -1
- package/dist/_members/nle-export/types.js +0 -9
- package/dist/_members/nle-export/types.js.map +0 -1
- package/dist/_members/nle-export/xml/index.js +0 -11
- package/dist/_members/nle-export/xml/index.js.map +0 -1
- package/dist/_members/nle-export/xml-utils.js +0 -48
- package/dist/_members/nle-export/xml-utils.js.map +0 -1
- package/dist/_members/perception/activeSpeaker.js +0 -103
- package/dist/_members/perception/audioQuality.js +0 -76
- package/dist/_members/perception/energyBeat.js +0 -99
- package/dist/_members/perception/identityMatch.js +0 -91
- package/dist/_members/perception/index.js +0 -48
- package/dist/_members/perception/visualQuality.js +0 -95
- package/dist/_members/plane/conformance.js +0 -90
- package/dist/_members/plane/contract.js +0 -49
- package/dist/_members/plane/index.js +0 -16
- package/dist/_members/primitives/backgrounds/index.js +0 -32
- package/dist/_members/primitives/backgrounds/index.js.map +0 -1
- package/dist/_members/primitives/captions/index.js +0 -398
- package/dist/_members/primitives/captions/index.js.map +0 -1
- package/dist/_members/primitives/chunk-2LVE4UIT.js +0 -139
- package/dist/_members/primitives/chunk-2LVE4UIT.js.map +0 -1
- package/dist/_members/primitives/chunk-3IQUH6KK.js +0 -20
- package/dist/_members/primitives/chunk-3IQUH6KK.js.map +0 -1
- package/dist/_members/primitives/chunk-3OMURV6Q.js +0 -112
- package/dist/_members/primitives/chunk-3OMURV6Q.js.map +0 -1
- package/dist/_members/primitives/chunk-4IS6TMEG.js +0 -21
- package/dist/_members/primitives/chunk-4IS6TMEG.js.map +0 -1
- package/dist/_members/primitives/chunk-5MWGAEGQ.js +0 -1644
- package/dist/_members/primitives/chunk-5MWGAEGQ.js.map +0 -1
- package/dist/_members/primitives/chunk-7RRPFPQK.js +0 -15
- package/dist/_members/primitives/chunk-7RRPFPQK.js.map +0 -1
- package/dist/_members/primitives/chunk-DH5TRZK2.js +0 -125
- package/dist/_members/primitives/chunk-DH5TRZK2.js.map +0 -1
- package/dist/_members/primitives/chunk-E3KNUSFG.js +0 -2337
- package/dist/_members/primitives/chunk-E3KNUSFG.js.map +0 -1
- package/dist/_members/primitives/chunk-G2B3G4HK.js +0 -47
- package/dist/_members/primitives/chunk-G2B3G4HK.js.map +0 -1
- package/dist/_members/primitives/chunk-HFPFGZXT.js +0 -1494
- package/dist/_members/primitives/chunk-HFPFGZXT.js.map +0 -1
- package/dist/_members/primitives/chunk-HIWVFZVH.js +0 -19
- package/dist/_members/primitives/chunk-HIWVFZVH.js.map +0 -1
- package/dist/_members/primitives/chunk-IDAL6G3Y.js.map +0 -1
- package/dist/_members/primitives/chunk-KNC6JP5F.js +0 -34
- package/dist/_members/primitives/chunk-KNC6JP5F.js.map +0 -1
- package/dist/_members/primitives/chunk-KYRDVZST.js +0 -459
- package/dist/_members/primitives/chunk-KYRDVZST.js.map +0 -1
- package/dist/_members/primitives/chunk-LWLHS2NS.js +0 -3410
- package/dist/_members/primitives/chunk-LWLHS2NS.js.map +0 -1
- package/dist/_members/primitives/chunk-QAQ3P7DR.js +0 -8855
- package/dist/_members/primitives/chunk-QAQ3P7DR.js.map +0 -1
- package/dist/_members/primitives/chunk-ROV2ODWC.js +0 -81
- package/dist/_members/primitives/chunk-ROV2ODWC.js.map +0 -1
- package/dist/_members/primitives/chunk-TCRC2FH3.js +0 -183
- package/dist/_members/primitives/chunk-TCRC2FH3.js.map +0 -1
- package/dist/_members/primitives/chunk-US4YEDAA.js +0 -96
- package/dist/_members/primitives/chunk-US4YEDAA.js.map +0 -1
- package/dist/_members/primitives/chunk-UVKRO5ER.js +0 -13
- package/dist/_members/primitives/chunk-UVKRO5ER.js.map +0 -1
- package/dist/_members/primitives/chunk-W4EIIF2I.js +0 -10
- package/dist/_members/primitives/chunk-W4EIIF2I.js.map +0 -1
- package/dist/_members/primitives/chunk-WPGKIPCO.js +0 -3563
- package/dist/_members/primitives/chunk-WPGKIPCO.js.map +0 -1
- package/dist/_members/primitives/chunk-WZFLEGMD.js +0 -1435
- package/dist/_members/primitives/chunk-WZFLEGMD.js.map +0 -1
- package/dist/_members/primitives/chunk-XHU3WBEI.js +0 -33
- package/dist/_members/primitives/chunk-XHU3WBEI.js.map +0 -1
- package/dist/_members/primitives/chunk-YN7WTZZ7.js +0 -46
- package/dist/_members/primitives/chunk-YN7WTZZ7.js.map +0 -1
- package/dist/_members/primitives/effects/index.js +0 -30
- package/dist/_members/primitives/effects/index.js.map +0 -1
- package/dist/_members/primitives/hero-text/index.js +0 -14
- package/dist/_members/primitives/hero-text/index.js.map +0 -1
- package/dist/_members/primitives/index.js +0 -64
- package/dist/_members/primitives/index.js.map +0 -1
- package/dist/_members/primitives/layouts/index.js +0 -24
- package/dist/_members/primitives/layouts/index.js.map +0 -1
- package/dist/_members/primitives/lib/easings.js +0 -26
- package/dist/_members/primitives/lib/easings.js.map +0 -1
- package/dist/_members/primitives/lib/index.js +0 -74
- package/dist/_members/primitives/lib/index.js.map +0 -1
- package/dist/_members/primitives/lib/palette.js +0 -72
- package/dist/_members/primitives/lib/palette.js.map +0 -1
- package/dist/_members/primitives/lib/preview.js +0 -8
- package/dist/_members/primitives/lib/preview.js.map +0 -1
- package/dist/_members/primitives/lib/schema.js +0 -12
- package/dist/_members/primitives/lib/schema.js.map +0 -1
- package/dist/_members/primitives/lib/seeded-random.js +0 -14
- package/dist/_members/primitives/lib/seeded-random.js.map +0 -1
- package/dist/_members/primitives/lib/text/contrast.js +0 -12
- package/dist/_members/primitives/lib/text/contrast.js.map +0 -1
- package/dist/_members/primitives/lib/text/fill.js +0 -8
- package/dist/_members/primitives/lib/text/fill.js.map +0 -1
- package/dist/_members/primitives/lib/text/fitText.js +0 -10
- package/dist/_members/primitives/lib/text/fitText.js.map +0 -1
- package/dist/_members/primitives/lib/text/marker.js +0 -8
- package/dist/_members/primitives/lib/text/marker.js.map +0 -1
- package/dist/_members/primitives/lib/text/motion.js +0 -16
- package/dist/_members/primitives/lib/text/motion.js.map +0 -1
- package/dist/_members/primitives/lib/text/recolor.js +0 -8
- package/dist/_members/primitives/lib/text/recolor.js.map +0 -1
- package/dist/_members/primitives/lib/text/spec.js +0 -1
- package/dist/_members/primitives/lib/text/spec.js.map +0 -1
- package/dist/_members/primitives/lib/text/stage.js +0 -8
- package/dist/_members/primitives/lib/text/stage.js.map +0 -1
- package/dist/_members/primitives/lib/text/typeface.js +0 -8
- package/dist/_members/primitives/lib/text/typeface.js.map +0 -1
- package/dist/_members/primitives/lib/tokens.js +0 -24
- package/dist/_members/primitives/lib/tokens.js.map +0 -1
- package/dist/_members/primitives/lib/types.js +0 -1
- package/dist/_members/primitives/lib/types.js.map +0 -1
- package/dist/_members/primitives/params-required.json +0 -153
- package/dist/_members/primitives/scenes/index.js +0 -25
- package/dist/_members/primitives/scenes/index.js.map +0 -1
- package/dist/_members/primitives/subject-foreground/index.js +0 -30
- package/dist/_members/primitives/subject-foreground/index.js.map +0 -1
- package/dist/_members/primitives/text/index.js +0 -57
- package/dist/_members/primitives/text/index.js.map +0 -1
- package/dist/_members/primitives/transitions/index.js +0 -67
- package/dist/_members/primitives/transitions/index.js.map +0 -1
- package/dist/_members/primitives/ui-blocks/index.js +0 -76
- package/dist/_members/primitives/ui-blocks/index.js.map +0 -1
- package/dist/_members/primitives/version-map.json +0 -105
- package/dist/_members/primitives/workspace.js +0 -60
- package/dist/_members/primitives/workspace.js.map +0 -1
- package/dist/chunk-7GISRVON.js +0 -14176
- package/dist/chunk-DIBOJJMU.js +0 -16838
- package/dist/chunk-EAUSEGB7.js +0 -420
- package/dist/chunk-FUWJOVVK.js +0 -3633
- package/dist/chunk-G75E7YA4.js +0 -11883
- package/dist/chunk-JCZQT7K3.js +0 -3266
- package/dist/chunk-KF5ETMKB.js +0 -544
- package/dist/chunk-NDKERSXY.js +0 -1296
- package/dist/chunk-V43Y7IE4.js +0 -3621
- package/dist/chunk-VIVQHIGZ.js +0 -4319
- package/dist/chunk-YA3OR2KK.js +0 -249
- package/dist/hls-HD4C5G6W.js +0 -33000
- package/dist/token-RGFIT24D.js +0 -69
- package/dist/token-util-GPLSGYVO.js +0 -5
- package/dist/vision_bundle-5Y376MAR.js +0 -4084
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/transitions/light-leak/index.tsx","../src/transitions/ink-wipe/index.tsx","../src/transitions/luma-matte/index.tsx","../src/transitions/glitch-cut/index.tsx","../src/transitions/zoom-through/index.tsx","../src/transitions/morph/index.tsx","../src/transitions/chromatic-aberration-wipe/index.tsx","../src/transitions/directional-wipe/index.tsx","../src/transitions/swipe-transition-wipe/index.tsx","../src/transitions/grid-pixelate-wipe/index.tsx","../src/transitions/kinetic-type-mask/index.tsx","../src/transitions/zoom-through-transition/index.tsx","../src/transitions/code-diff-wipe/index.tsx","../src/transitions/chromatic-aberration-wipe/config.ts","../src/transitions/code-diff-wipe/config.ts","../src/transitions/directional-wipe/config.ts","../src/transitions/frosted-glass-wipe/config.ts","../src/transitions/glitch-cut/config.ts","../src/transitions/grid-pixelate-wipe/config.ts","../src/transitions/ink-wipe/config.ts","../src/transitions/kinetic-type-mask/config.ts","../src/transitions/light-leak/config.ts","../src/transitions/luma-matte/config.ts","../src/transitions/morph/config.ts","../src/transitions/spatial-push/config.ts","../src/transitions/swipe-transition-wipe/config.ts","../src/transitions/zoom-through/config.ts","../src/transitions/zoom-through-transition/config.ts","../src/transitions/index.ts"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { AbsoluteFill, interpolate } from 'remotion';\nimport type {\n TransitionPresentation,\n TransitionPresentationComponentProps,\n} from '@remotion/transitions';\n\nexport type LightLeakProps = {\n /** Hue rotation in degrees (0-360, default 30 for warm amber) */\n hue?: number;\n /** Random seed for slight variation (currently unused, reserved) */\n seed?: number;\n};\n\n/**\n * Light-leak transition — a bright overlay that fades in then out,\n * simulating the look of analog film light leaks. The exiting scene\n * fades out beneath the leak, then the entering scene fades in.\n *\n * Implemented as a CSS fallback (no @remotion/light-leaks dependency).\n */\nconst LightLeakPresentation: React.FC<\n TransitionPresentationComponentProps<LightLeakProps>\n> = ({ children, presentationDirection, presentationProgress, passedProps }) => {\n const { hue = 30 } = passedProps;\n const isEntering = presentationDirection === 'entering';\n\n const style = useMemo((): React.CSSProperties => {\n if (isEntering) {\n // Entering scene fades in during second half of transition\n const opacity = interpolate(presentationProgress, [0, 0.4, 1], [0, 0, 1], {\n extrapolateLeft: 'clamp',\n extrapolateRight: 'clamp',\n });\n return { opacity };\n }\n // Exiting scene fades out during first half\n const opacity = interpolate(presentationProgress, [0, 0.6, 1], [1, 0, 0], {\n extrapolateLeft: 'clamp',\n extrapolateRight: 'clamp',\n });\n return { opacity };\n }, [isEntering, presentationProgress]);\n\n // Bright overlay simulating light leak\n const leakOpacity = interpolate(\n presentationProgress,\n [0, 0.3, 0.5, 0.7, 1],\n [0, 0.8, 1, 0.8, 0],\n { extrapolateLeft: 'clamp', extrapolateRight: 'clamp' },\n );\n\n return (\n <AbsoluteFill>\n <AbsoluteFill style={style}>{children}</AbsoluteFill>\n {/* Light leak overlay — only render on the entering layer to avoid doubling */}\n {isEntering && (\n <AbsoluteFill\n style={{\n background: `linear-gradient(\n 135deg,\n hsla(${hue}, 100%, 70%, ${leakOpacity * 0.9}),\n hsla(${hue + 40}, 100%, 80%, ${leakOpacity * 0.6}),\n hsla(${hue + 80}, 100%, 60%, ${leakOpacity * 0.3})\n )`,\n mixBlendMode: 'screen',\n pointerEvents: 'none',\n }}\n />\n )}\n </AbsoluteFill>\n );\n};\n\n/** Factory: creates a light-leak transition presentation. */\nexport const lightLeak = (\n props?: LightLeakProps,\n): TransitionPresentation<LightLeakProps> => ({\n component: LightLeakPresentation,\n props: props ?? {},\n});\n\nexport const LightLeak = LightLeakPresentation;\n","import React, { useMemo } from 'react';\nimport { AbsoluteFill, interpolate } from 'remotion';\nimport type {\n TransitionPresentation,\n TransitionPresentationComponentProps,\n} from '@remotion/transitions';\n\ntype WipeDirection = 'left' | 'right' | 'up' | 'down';\n\nexport type InkWipeProps = {\n /** Direction the wipe travels (default 'left') */\n direction?: WipeDirection;\n /** Color of the ink leading edge (default 'black') */\n color?: string;\n};\n\n/**\n * Organic wipe transition using CSS clip-path inset.\n * The entering scene clips in from one direction while the exiting scene\n * clips out in the opposite direction, with a colored ink edge between them.\n */\nconst InkWipePresentation: React.FC<\n TransitionPresentationComponentProps<InkWipeProps>\n> = ({ children, presentationDirection, presentationProgress, passedProps }) => {\n const { direction = 'left', color = 'black' } = passedProps;\n const isEntering = presentationDirection === 'entering';\n\n const clipPath = useMemo((): string => {\n // Progress 0→1: entering scene reveals, exiting scene hides\n const p = presentationProgress;\n\n if (isEntering) {\n // Entering clips from the wipe direction inward\n switch (direction) {\n case 'left':\n return `inset(0 ${interpolate(p, [0, 1], [100, 0])}% 0 0)`;\n case 'right':\n return `inset(0 0 0 ${interpolate(p, [0, 1], [100, 0])}%)`;\n case 'up':\n return `inset(0 0 ${interpolate(p, [0, 1], [100, 0])}% 0)`;\n case 'down':\n return `inset(${interpolate(p, [0, 1], [100, 0])}% 0 0 0)`;\n }\n } else {\n // Exiting clips away opposite to the wipe direction\n switch (direction) {\n case 'left':\n return `inset(0 0 0 ${interpolate(p, [0, 1], [0, 100])}%)`;\n case 'right':\n return `inset(0 ${interpolate(p, [0, 1], [0, 100])}% 0 0)`;\n case 'up':\n return `inset(${interpolate(p, [0, 1], [0, 100])}% 0 0 0)`;\n case 'down':\n return `inset(0 0 ${interpolate(p, [0, 1], [0, 100])}% 0)`;\n }\n }\n }, [direction, isEntering, presentationProgress]);\n\n const style = useMemo(\n (): React.CSSProperties => ({ clipPath }),\n [clipPath],\n );\n\n // Ink leading edge — a thin colored bar at the wipe boundary\n const edgeOpacity = interpolate(\n presentationProgress,\n [0, 0.1, 0.9, 1],\n [0, 1, 1, 0],\n { extrapolateLeft: 'clamp', extrapolateRight: 'clamp' },\n );\n\n const edgeStyle = useMemo((): React.CSSProperties => {\n const base: React.CSSProperties = {\n position: 'absolute',\n backgroundColor: color,\n opacity: edgeOpacity,\n pointerEvents: 'none',\n };\n const pos = `${presentationProgress * 100}%`;\n switch (direction) {\n case 'left':\n return { ...base, top: 0, bottom: 0, right: pos, width: 4 };\n case 'right':\n return { ...base, top: 0, bottom: 0, left: pos, width: 4 };\n case 'up':\n return { ...base, left: 0, right: 0, bottom: pos, height: 4 };\n case 'down':\n return { ...base, left: 0, right: 0, top: pos, height: 4 };\n }\n }, [color, direction, edgeOpacity, presentationProgress]);\n\n return (\n <AbsoluteFill>\n <AbsoluteFill style={style}>{children}</AbsoluteFill>\n {isEntering && <div style={edgeStyle} />}\n </AbsoluteFill>\n );\n};\n\n/** Factory: creates an ink-wipe transition presentation. */\nexport const inkWipe = (\n props?: InkWipeProps,\n): TransitionPresentation<InkWipeProps> => ({\n component: InkWipePresentation,\n props: props ?? {},\n});\n\nexport const InkWipe = InkWipePresentation;\n","import React, { useMemo } from 'react';\nimport { AbsoluteFill, interpolate } from 'remotion';\nimport type {\n TransitionPresentation,\n TransitionPresentationComponentProps,\n} from '@remotion/transitions';\n\ntype MatteStyle = 'smoke' | 'brush' | 'geometric';\n\nexport type LumaMatteProps = {\n /** Matte style preset (default 'smoke') */\n matte?: MatteStyle;\n};\n\n/**\n * Soft-edge wipe transition using CSS mask-image gradient.\n * Simulates luma-matte transitions without actual matte video files.\n * Different matte styles control the gradient shape and softness.\n */\nconst LumaMattePresentation: React.FC<\n TransitionPresentationComponentProps<LumaMatteProps>\n> = ({ children, presentationDirection, presentationProgress, passedProps }) => {\n const { matte = 'smoke' } = passedProps;\n const isEntering = presentationDirection === 'entering';\n\n const style = useMemo((): React.CSSProperties => {\n // Map progress to a sweep position\n // The mask moves from fully hidden to fully revealed\n const sweepPos = interpolate(presentationProgress, [0, 1], [-20, 120], {\n extrapolateLeft: 'clamp',\n extrapolateRight: 'clamp',\n });\n\n // Softness of the matte edge — wider = softer transition\n let softness: number;\n let gradientAngle: string;\n\n switch (matte) {\n case 'smoke':\n softness = 30; // Very soft, dreamy edge\n gradientAngle = 'to right';\n break;\n case 'brush':\n softness = 15; // Medium, painterly edge\n gradientAngle = '135deg';\n break;\n case 'geometric':\n softness = 5; // Hard, clean edge\n gradientAngle = 'to right';\n break;\n }\n\n const maskStart = sweepPos - softness;\n const maskEnd = sweepPos + softness;\n\n if (isEntering) {\n return {\n maskImage: `linear-gradient(${gradientAngle}, transparent ${maskStart}%, black ${maskEnd}%)`,\n WebkitMaskImage: `linear-gradient(${gradientAngle}, transparent ${maskStart}%, black ${maskEnd}%)`,\n };\n }\n\n // Exiting: inverse mask — revealed area shrinks\n return {\n maskImage: `linear-gradient(${gradientAngle}, black ${maskStart}%, transparent ${maskEnd}%)`,\n WebkitMaskImage: `linear-gradient(${gradientAngle}, black ${maskStart}%, transparent ${maskEnd}%)`,\n };\n }, [isEntering, matte, presentationProgress]);\n\n return (\n <AbsoluteFill style={style}>\n {children}\n </AbsoluteFill>\n );\n};\n\n/** Factory: creates a luma-matte transition presentation. */\nexport const lumaMatte = (\n props?: LumaMatteProps,\n): TransitionPresentation<LumaMatteProps> => ({\n component: LumaMattePresentation,\n props: props ?? {},\n});\n\nexport const LumaMatte = LumaMattePresentation;\n","import React, { useMemo } from 'react';\nimport { AbsoluteFill, interpolate } from 'remotion';\nimport type {\n TransitionPresentation,\n TransitionPresentationComponentProps,\n} from '@remotion/transitions';\n\nexport type GlitchCutProps = {\n /** Glitch intensity 0-1 (default 0.5) */\n intensity?: number;\n /** Number of horizontal slices (default 5) */\n slices?: number;\n};\n\n/**\n * Digital glitch transition with RGB channel split via CSS drop-shadow.\n * Glitch amount ramps up then snaps to the new scene, then ramps down.\n */\nconst GlitchCutPresentation: React.FC<\n TransitionPresentationComponentProps<GlitchCutProps>\n> = ({ children, presentationDirection, presentationProgress, passedProps }) => {\n const { intensity = 0.5, slices = 5 } = passedProps;\n const isEntering = presentationDirection === 'entering';\n\n // Glitch peaks in the middle of the transition\n const glitchAmount = interpolate(\n presentationProgress,\n [0, 0.3, 0.5, 0.7, 1],\n [0, 1, 1, 1, 0],\n { extrapolateLeft: 'clamp', extrapolateRight: 'clamp' },\n );\n\n const maxShift = intensity * 20; // max pixel shift\n\n const style = useMemo((): React.CSSProperties => {\n const shift = glitchAmount * maxShift;\n\n // RGB split via drop-shadow — red channel shifts left, cyan shifts right\n const filter =\n shift > 0.5\n ? `drop-shadow(${shift}px 0 0 rgba(255,0,0,0.5)) drop-shadow(${-shift}px 0 0 rgba(0,255,255,0.5))`\n : 'none';\n\n // Scene swap: exiting fades at midpoint, entering appears at midpoint\n let opacity: number;\n if (isEntering) {\n opacity = interpolate(presentationProgress, [0, 0.45, 0.55, 1], [0, 0, 1, 1], {\n extrapolateLeft: 'clamp',\n extrapolateRight: 'clamp',\n });\n } else {\n opacity = interpolate(presentationProgress, [0, 0.45, 0.55, 1], [1, 1, 0, 0], {\n extrapolateLeft: 'clamp',\n extrapolateRight: 'clamp',\n });\n }\n\n // Horizontal slice displacement using transform\n const sliceOffset =\n glitchAmount > 0\n ? `translateX(${Math.sin(presentationProgress * slices * Math.PI) * shift * 0.5}px)`\n : 'none';\n\n return {\n filter,\n opacity,\n transform: sliceOffset,\n };\n }, [glitchAmount, isEntering, maxShift, presentationProgress, slices]);\n\n return (\n <AbsoluteFill style={style}>\n {children}\n </AbsoluteFill>\n );\n};\n\n/** Factory: creates a glitch-cut transition presentation. */\nexport const glitchCut = (\n props?: GlitchCutProps,\n): TransitionPresentation<GlitchCutProps> => ({\n component: GlitchCutPresentation,\n props: props ?? {},\n});\n\nexport const GlitchCut = GlitchCutPresentation;\n","import React, { useMemo } from 'react';\nimport { AbsoluteFill, interpolate } from 'remotion';\nimport type {\n TransitionPresentation,\n TransitionPresentationComponentProps,\n} from '@remotion/transitions';\n\nexport type ZoomThroughProps = {\n /** Zoom focal point, normalized 0-1 (default { x: 0.5, y: 0.5 }) */\n zoomPoint?: { x: number; y: number };\n};\n\n/**\n * Camera zoom-through transition.\n * The exiting scene scales up and fades out (zooming \"into\" the scene),\n * while the entering scene starts scaled up large and scales down to 1,\n * creating the illusion of flying through one scene into the next.\n */\nconst ZoomThroughPresentation: React.FC<\n TransitionPresentationComponentProps<ZoomThroughProps>\n> = ({ children, presentationDirection, presentationProgress, passedProps }) => {\n const { zoomPoint = { x: 0.5, y: 0.5 } } = passedProps;\n const isEntering = presentationDirection === 'entering';\n\n const style = useMemo((): React.CSSProperties => {\n const originX = `${zoomPoint.x * 100}%`;\n const originY = `${zoomPoint.y * 100}%`;\n\n if (isEntering) {\n // Entering: starts large (zoomed in), scales down to 1\n const scale = interpolate(presentationProgress, [0, 1], [3, 1], {\n extrapolateLeft: 'clamp',\n extrapolateRight: 'clamp',\n });\n const opacity = interpolate(presentationProgress, [0, 0.3, 1], [0, 1, 1], {\n extrapolateLeft: 'clamp',\n extrapolateRight: 'clamp',\n });\n return {\n transform: `scale(${scale})`,\n transformOrigin: `${originX} ${originY}`,\n opacity,\n };\n }\n\n // Exiting: scales up from 1 and fades out\n const scale = interpolate(presentationProgress, [0, 1], [1, 3], {\n extrapolateLeft: 'clamp',\n extrapolateRight: 'clamp',\n });\n const opacity = interpolate(presentationProgress, [0, 0.7, 1], [1, 1, 0], {\n extrapolateLeft: 'clamp',\n extrapolateRight: 'clamp',\n });\n return {\n transform: `scale(${scale})`,\n transformOrigin: `${originX} ${originY}`,\n opacity,\n };\n }, [isEntering, presentationProgress, zoomPoint]);\n\n return (\n <AbsoluteFill style={style}>\n {children}\n </AbsoluteFill>\n );\n};\n\n/** Factory: creates a zoom-through transition presentation. */\nexport const zoomThrough = (\n props?: ZoomThroughProps,\n): TransitionPresentation<ZoomThroughProps> => ({\n component: ZoomThroughPresentation,\n props: props ?? {},\n});\n\nexport const ZoomThrough = ZoomThroughPresentation;\n","import React, { useMemo } from 'react';\nimport { AbsoluteFill, interpolate } from 'remotion';\nimport type {\n TransitionPresentation,\n TransitionPresentationComponentProps,\n} from '@remotion/transitions';\n\ntype MorphType = 'dissolve' | 'displacement';\n\nexport type MorphProps = {\n /** Morph type (default 'dissolve'). displacement adds slight scale distortion. */\n type?: MorphType;\n};\n\n/**\n * Cross-dissolve / morph transition.\n * 'dissolve' — pure opacity crossfade.\n * 'displacement' — opacity crossfade with slight scale distortion for an organic feel.\n * (gl-transitions integration is a future enhancement.)\n */\nconst MorphPresentation: React.FC<\n TransitionPresentationComponentProps<MorphProps>\n> = ({ children, presentationDirection, presentationProgress, passedProps }) => {\n const { type = 'dissolve' } = passedProps;\n const isEntering = presentationDirection === 'entering';\n\n const style = useMemo((): React.CSSProperties => {\n const opacity = isEntering ? presentationProgress : 1 - presentationProgress;\n\n if (type === 'displacement') {\n // Add subtle scale distortion — exiting shrinks slightly, entering grows slightly\n const scale = isEntering\n ? interpolate(presentationProgress, [0, 1], [1.05, 1], {\n extrapolateLeft: 'clamp',\n extrapolateRight: 'clamp',\n })\n : interpolate(presentationProgress, [0, 1], [1, 0.95], {\n extrapolateLeft: 'clamp',\n extrapolateRight: 'clamp',\n });\n\n return {\n opacity,\n transform: `scale(${scale})`,\n };\n }\n\n return { opacity };\n }, [isEntering, presentationProgress, type]);\n\n return (\n <AbsoluteFill style={style}>\n {children}\n </AbsoluteFill>\n );\n};\n\n/** Factory: creates a morph/dissolve transition presentation. */\nexport const morph = (\n props?: MorphProps,\n): TransitionPresentation<MorphProps> => ({\n component: MorphPresentation,\n props: props ?? {},\n});\n\nexport const Morph = MorphPresentation;\n","/**\n * Adapted from remocn (https://github.com/kapishdima/remocn) — MIT\n * Copyright (c) 2026 KapishDima\n *\n * Modifications:\n * - converted from a standalone from/to component (baked demo scenes) to a\n * cueframe TransitionPresentation. Visual identity kept: horizontal slide\n * swap with an RGB drop-shadow split during the peak of the move.\n */\n\nimport React from 'react';\nimport { Easing, interpolate } from 'remotion';\nimport type {\n TransitionPresentation,\n TransitionPresentationComponentProps,\n} from '@remotion/transitions';\n\nexport type ChromaticAberrationWipeProps = {\n /** Slide direction the OLD scene exits toward (default 'left') */\n direction?: 'left' | 'right';\n /** RGB split offset in px at the peak (default 8) */\n aberrationOffset?: number;\n};\n\nconst ChromaticAberrationWipePresentation: React.FC<\n TransitionPresentationComponentProps<ChromaticAberrationWipeProps>\n> = ({ children, presentationDirection, presentationProgress, passedProps }) => {\n const { direction = 'left', aberrationOffset = 8 } = passedProps;\n const isEntering = presentationDirection === 'entering';\n\n const p = interpolate(presentationProgress, [0, 1], [0, 1], {\n easing: Easing.bezier(0.65, 0, 0.35, 1),\n });\n\n const sign = direction === 'left' ? -1 : 1;\n const offset = isEntering ? (1 - p) * 100 * -sign : p * 100 * sign;\n\n // RGB split during the peak of the move\n const inPeak = presentationProgress > 0.25 && presentationProgress < 0.75;\n const filter = inPeak\n ? `drop-shadow(-${aberrationOffset}px 0 0 rgba(255,0,0,0.8)) drop-shadow(${aberrationOffset}px 0 0 rgba(0,255,255,0.8))`\n : 'none';\n\n return (\n <div\n style={{\n position: 'absolute',\n inset: 0,\n overflow: 'hidden',\n transform: `translateX(${offset}%)`,\n filter,\n willChange: 'transform',\n }}\n >\n {children}\n </div>\n );\n};\n\nexport const chromaticAberrationWipe = (\n props?: ChromaticAberrationWipeProps,\n): TransitionPresentation<ChromaticAberrationWipeProps> => ({\n component: ChromaticAberrationWipePresentation,\n props: props ?? {},\n});\n\nexport const ChromaticAberrationWipe = ChromaticAberrationWipePresentation;\n","/**\n * Adapted from remocn (https://github.com/kapishdima/remocn) — MIT\n * Copyright (c) 2026 KapishDima\n *\n * Modifications:\n * - converted from a standalone from/to component (baked demo scenes) to a\n * cueframe TransitionPresentation — real scenes come from TransitionSeries,\n * progress from the timing. Visual identity (eased directional push) kept.\n */\n\nimport React from 'react';\nimport { Easing, interpolate } from 'remotion';\nimport type {\n TransitionPresentation,\n TransitionPresentationComponentProps,\n} from '@remotion/transitions';\n\nexport type DirectionalWipeProps = {\n /** Push direction the OLD scene exits toward (default 'left') */\n direction?: 'left' | 'right' | 'up' | 'down';\n};\n\nconst DirectionalWipePresentation: React.FC<\n TransitionPresentationComponentProps<DirectionalWipeProps>\n> = ({ children, presentationDirection, presentationProgress, passedProps }) => {\n const { direction = 'left' } = passedProps;\n const isEntering = presentationDirection === 'entering';\n\n const p = interpolate(presentationProgress, [0, 1], [0, 1], {\n easing: Easing.bezier(0.65, 0, 0.35, 1),\n });\n\n const axis = direction === 'left' || direction === 'right' ? 'x' : 'y';\n const sign = direction === 'left' || direction === 'up' ? -1 : 1;\n const offset = isEntering ? (1 - p) * 100 * -sign : p * 100 * sign;\n const transform =\n axis === 'x' ? `translateX(${offset}%)` : `translateY(${offset}%)`;\n\n return (\n <div\n style={{\n position: 'absolute',\n inset: 0,\n overflow: 'hidden',\n transform,\n willChange: 'transform',\n }}\n >\n {children}\n </div>\n );\n};\n\nexport const directionalWipe = (\n props?: DirectionalWipeProps,\n): TransitionPresentation<DirectionalWipeProps> => ({\n component: DirectionalWipePresentation,\n props: props ?? {},\n});\n\nexport const DirectionalWipe = DirectionalWipePresentation;\n","/**\n * Adapted from remocn (https://github.com/kapishdima/remocn) — MIT\n * Copyright (c) 2026 KapishDima\n *\n * Modifications:\n * - converted from a standalone from/to component (baked demo scenes) to a\n * cueframe TransitionPresentation. Visual identity kept: a flick-style swipe\n * where the old scene slides out and dims while the new one slides in with a\n * parallax lag.\n */\n\nimport React from 'react';\nimport { Easing, interpolate } from 'remotion';\nimport type {\n TransitionPresentation,\n TransitionPresentationComponentProps,\n} from '@remotion/transitions';\n\nexport type SwipeTransitionWipeProps = {\n /** Swipe direction the OLD scene exits toward (default 'left') */\n direction?: 'left' | 'right';\n /** How much the outgoing scene dims as it leaves, 0–1 (default 0.4) */\n dimStrength?: number;\n /** Parallax lag on the incoming scene, 0–1 (default 0.6) */\n parallaxFactor?: number;\n};\n\nconst SwipeTransitionWipePresentation: React.FC<\n TransitionPresentationComponentProps<SwipeTransitionWipeProps>\n> = ({ children, presentationDirection, presentationProgress, passedProps }) => {\n const { direction = 'left', dimStrength = 0.4, parallaxFactor = 0.6 } = passedProps;\n const isEntering = presentationDirection === 'entering';\n const sign = direction === 'left' ? -1 : 1;\n\n // Flick feel: fast start, settled end.\n const p = interpolate(presentationProgress, [0, 1], [0, 1], {\n easing: Easing.bezier(0.3, 0.9, 0.35, 1),\n });\n\n if (!isEntering) {\n const dim = interpolate(p, [0, 1], [0, dimStrength]);\n return (\n <div\n style={{\n position: 'absolute',\n inset: 0,\n overflow: 'hidden',\n transform: `translateX(${p * 100 * sign}%)`,\n willChange: 'transform',\n }}\n >\n {children}\n <div style={{ position: 'absolute', inset: 0, background: '#000', opacity: dim }} />\n </div>\n );\n }\n\n // Incoming: slides in from the opposite edge, inner content lags (parallax).\n const outer = (1 - p) * 100 * -sign;\n const inner = (1 - p) * 30 * sign * parallaxFactor;\n return (\n <div\n style={{\n position: 'absolute',\n inset: 0,\n overflow: 'hidden',\n transform: `translateX(${outer}%)`,\n willChange: 'transform',\n }}\n >\n <div\n style={{\n position: 'absolute',\n inset: 0,\n transform: `translateX(${inner}%)`,\n willChange: 'transform',\n }}\n >\n {children}\n </div>\n </div>\n );\n};\n\nexport const swipeTransitionWipe = (\n props?: SwipeTransitionWipeProps,\n): TransitionPresentation<SwipeTransitionWipeProps> => ({\n component: SwipeTransitionWipePresentation,\n props: props ?? {},\n});\n\nexport const SwipeTransitionWipe = SwipeTransitionWipePresentation;\n","/**\n * Adapted from remocn (https://github.com/kapishdima/remocn) — MIT\n * Copyright (c) 2026 KapishDima\n *\n * Modifications:\n * - converted from a standalone from/to component (baked demo scenes) to a\n * cueframe TransitionPresentation. Visual identity kept: a mosaic of cells\n * flashes over the cut in a wave/diagonal/spiral pattern — cells pop IN over\n * the old scene, the scene swaps at midpoint, cells pop OUT off the new one.\n */\n\nimport React, { useMemo } from 'react';\nimport { interpolate } from 'remotion';\nimport type {\n TransitionPresentation,\n TransitionPresentationComponentProps,\n} from '@remotion/transitions';\n\nexport type GridPixelateWipeProps = {\n /** Grid columns (default 12) */\n cols?: number;\n /** Grid rows (default 7) */\n rows?: number;\n /** Cell activation pattern (default 'wave') */\n pattern?: 'wave' | 'diagonal' | 'spiral';\n /** Mosaic cell color (default near-black) */\n cellColor?: string;\n};\n\nfunction spiralIndices(cols: number, rows: number): number[][] {\n const out: number[][] = Array.from({ length: rows }, () => Array(cols).fill(0));\n let top = 0;\n let bottom = rows - 1;\n let left = 0;\n let right = cols - 1;\n let i = 0;\n while (top <= bottom && left <= right) {\n for (let x = left; x <= right; x++) out[top][x] = i++;\n top++;\n for (let y = top; y <= bottom; y++) out[y][right] = i++;\n right--;\n if (top <= bottom) {\n for (let x = right; x >= left; x--) out[bottom][x] = i++;\n bottom--;\n }\n if (left <= right) {\n for (let y = bottom; y >= top; y--) out[y][left] = i++;\n left++;\n }\n }\n return out;\n}\n\nconst GridPixelateWipePresentation: React.FC<\n TransitionPresentationComponentProps<GridPixelateWipeProps>\n> = ({ children, presentationDirection, presentationProgress, passedProps }) => {\n const {\n cols = 12,\n rows = 7,\n pattern = 'wave',\n cellColor = '#0b0b10',\n } = passedProps;\n const isEntering = presentationDirection === 'entering';\n const p = presentationProgress;\n\n // Per-cell activation delay, normalized to 0..1 across the pattern.\n const delays = useMemo(() => {\n const raw: number[][] = Array.from({ length: rows }, () => Array(cols).fill(0));\n const spiral = pattern === 'spiral' ? spiralIndices(cols, rows) : null;\n for (let y = 0; y < rows; y++) {\n for (let x = 0; x < cols; x++) {\n if (pattern === 'wave') {\n raw[y][x] = Math.hypot(x - (cols - 1) / 2, y - (rows - 1) / 2);\n } else if (pattern === 'diagonal') {\n raw[y][x] = x + y;\n } else if (spiral) {\n raw[y][x] = spiral[y][x];\n }\n }\n }\n let min = Infinity;\n let max = -Infinity;\n for (const row of raw) for (const v of row) { min = Math.min(min, v); max = Math.max(max, v); }\n const range = max - min || 1;\n return raw.map((row) => row.map((v) => (v - min) / range));\n }, [cols, rows, pattern]);\n\n // Scene visibility swaps at midpoint (under the mosaic).\n const visible = isEntering ? p >= 0.5 : p < 0.5;\n\n // Cells pop in over the first half, pop out over the second. Only the top\n // (entering) wrapper draws the mosaic so it isn't double-composited.\n const cells: React.ReactNode[] = [];\n if (isEntering) {\n const FEATHER = 0.25; // per-cell fade span within the half\n for (let y = 0; y < rows; y++) {\n for (let x = 0; x < cols; x++) {\n const d = delays[y][x] * (1 - FEATHER);\n const inO = interpolate(p * 2, [d, d + FEATHER], [0, 1], {\n extrapolateLeft: 'clamp',\n extrapolateRight: 'clamp',\n });\n const outO = interpolate(p * 2 - 1, [d, d + FEATHER], [1, 0], {\n extrapolateLeft: 'clamp',\n extrapolateRight: 'clamp',\n });\n const opacity = p < 0.5 ? inO : outO;\n if (opacity <= 0.001) continue;\n cells.push(\n <div\n key={`${x}-${y}`}\n style={{\n position: 'absolute',\n left: `${(x / cols) * 100}%`,\n top: `${(y / rows) * 100}%`,\n width: `${100 / cols}%`,\n height: `${100 / rows}%`,\n background: cellColor,\n opacity,\n }}\n />,\n );\n }\n }\n }\n\n return (\n <div style={{ position: 'absolute', inset: 0, overflow: 'hidden' }}>\n <div style={{ position: 'absolute', inset: 0, opacity: visible ? 1 : 0 }}>\n {children}\n </div>\n {cells}\n </div>\n );\n};\n\nexport const gridPixelateWipe = (\n props?: GridPixelateWipeProps,\n): TransitionPresentation<GridPixelateWipeProps> => ({\n component: GridPixelateWipePresentation,\n props: props ?? {},\n});\n\nexport const GridPixelateWipe = GridPixelateWipePresentation;\n","/**\n * Adapted from remocn (https://github.com/kapishdima/remocn) — MIT\n * Copyright (c) 2026 KapishDima\n *\n * Modifications:\n * - converted from a standalone from/to component (baked demo scenes) to a\n * cueframe TransitionPresentation. Visual identity kept: a giant word slams\n * over the old scene, then scales up while the new scene is revealed INSIDE\n * the glyphs (SVG text clip) until it consumes the frame.\n */\n\nimport React, { useId } from 'react';\nimport { Easing, interpolate } from 'remotion';\nimport type {\n TransitionPresentation,\n TransitionPresentationComponentProps,\n} from '@remotion/transitions';\n\nexport type KineticTypeMaskProps = {\n /** The mask word (default 'NEXT'). Short + heavy reads best. */\n text?: string;\n /** Final glyph scale — how far past the frame the word grows (default 90) */\n maxScale?: number;\n};\n\nconst KineticTypeMaskPresentation: React.FC<\n TransitionPresentationComponentProps<KineticTypeMaskProps>\n> = ({ children, presentationDirection, presentationProgress, passedProps }) => {\n const { text = 'NEXT', maxScale = 90 } = passedProps;\n const isEntering = presentationDirection === 'entering';\n const rawId = useId().replace(/[:#]/g, '');\n const clipId = `ktm-${rawId}`;\n\n // Phase 1 (0 → 0.3): word slams in over the old scene.\n // Phase 2 (0.3 → 1): word scales up; the new scene shows through the glyphs.\n const slam = interpolate(presentationProgress, [0, 0.25], [3, 1], {\n extrapolateLeft: 'clamp',\n extrapolateRight: 'clamp',\n easing: Easing.bezier(0.2, 0.9, 0.3, 1),\n });\n const grow = interpolate(presentationProgress, [0.3, 1], [1, maxScale], {\n extrapolateLeft: 'clamp',\n extrapolateRight: 'clamp',\n easing: Easing.bezier(0.7, 0, 0.84, 0),\n });\n const scale = presentationProgress < 0.3 ? slam : grow;\n\n if (!isEntering) {\n // Old scene stays put underneath; the word overlay is drawn by the\n // entering wrapper (on top) so it isn't double-composited.\n return <div style={{ position: 'absolute', inset: 0 }}>{children}</div>;\n }\n\n return (\n <div style={{ position: 'absolute', inset: 0, overflow: 'hidden' }}>\n {/* New scene, visible only through the scaling glyphs */}\n <div\n style={{\n position: 'absolute',\n inset: 0,\n clipPath: `url(#${clipId})`,\n WebkitClipPath: `url(#${clipId})`,\n }}\n >\n {children}\n </div>\n {/* Glyph outline plate during the slam so the word reads before reveal */}\n {presentationProgress < 0.3 && (\n <div\n style={{\n position: 'absolute',\n inset: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: '70vh',\n fontWeight: 900,\n fontFamily: 'inherit',\n letterSpacing: '-0.04em',\n color: 'rgba(255,255,255,0.92)',\n transform: `scale(${slam})`,\n transformOrigin: 'center center',\n willChange: 'transform',\n mixBlendMode: 'difference',\n }}\n >\n {text}\n </div>\n )}\n <svg width=\"0\" height=\"0\" style={{ position: 'absolute' }}>\n <defs>\n <clipPath id={clipId} clipPathUnits=\"objectBoundingBox\">\n <text\n x=\"0.5\"\n y=\"0.62\"\n textAnchor=\"middle\"\n fontSize={0.42}\n fontWeight={900}\n fontFamily=\"Helvetica, Arial, sans-serif\"\n transform={`translate(0.5 0.5) scale(${scale}) translate(-0.5 -0.5)`}\n >\n {text}\n </text>\n </clipPath>\n </defs>\n </svg>\n </div>\n );\n};\n\nexport const kineticTypeMask = (\n props?: KineticTypeMaskProps,\n): TransitionPresentation<KineticTypeMaskProps> => ({\n component: KineticTypeMaskPresentation,\n props: props ?? {},\n});\n\nexport const KineticTypeMask = KineticTypeMaskPresentation;\n","/**\n * Adapted from remocn (https://github.com/kapishdima/remocn) — MIT\n * Copyright (c) 2026 KapishDima\n *\n * Modifications:\n * - hermetic-ize fontFamily (use inherit / monospace, not Geist CSS vars)\n * - strip \"use client\" directive (re-added at shadcn-registry export time)\n */\n\nimport type { ReactNode } from \"react\";\nimport { Easing, interpolate, useCurrentFrame } from \"remotion\";\nimport * as palette from \"../../lib/palette\";\n\nexport interface ZoomThroughTransitionProps {\n children?: ReactNode;\n targetScale?: number;\n transformOrigin?: string;\n background?: string;\n /** Frames the zoom-through takes, independent of the hosting sequence. */\n beatFrames?: number;\n speed?: number;\n className?: string;\n}\n\nconst FONT_FAMILY =\n \"inherit\";\n\nfunction DefaultContent() {\n return (\n <div\n style={{\n width: 320,\n height: 200,\n borderRadius: 24,\n background: `linear-gradient(135deg, ${palette.ACCENT} 0%, ${palette.VIOLET} 100%)`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n color: palette.TEXT_HI,\n fontFamily: FONT_FAMILY,\n fontSize: 48,\n fontWeight: 700,\n letterSpacing: \"-0.03em\",\n }}\n >\n Zoom\n </div>\n );\n}\n\nexport function ZoomThroughTransition({\n children,\n targetScale = 20,\n transformOrigin = \"center center\",\n background = \"transparent\",\n beatFrames = 45,\n speed = 1,\n className,\n}: ZoomThroughTransitionProps) {\n const frame = useCurrentFrame() * speed;\n\n // Own-beat timing: the zoom completes in `beatFrames` regardless of the\n // hosting sequence's duration. Interpolating over durationInFrames made the\n // zoom crawl in long clips and park on the post-fade background for the rest.\n const scale = interpolate(frame, [0, beatFrames], [1, targetScale], {\n extrapolateRight: \"clamp\",\n easing: Easing.bezier(0.7, 0, 0.84, 0),\n });\n\n const opacity = interpolate(\n frame,\n [0, beatFrames * 0.7, beatFrames],\n [1, 1, 0],\n { extrapolateRight: \"clamp\" },\n );\n\n const content = children ?? <DefaultContent />;\n\n return (\n <div\n className={className}\n style={{\n position: \"absolute\",\n inset: 0,\n background,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n overflow: \"hidden\",\n }}\n >\n <div\n style={{\n transform: `scale(${scale})`,\n transformOrigin,\n opacity,\n willChange: \"transform, opacity\",\n }}\n >\n {content}\n </div>\n </div>\n );\n}\n","/**\n * Adapted from remocn (https://github.com/kapishdima/remocn) — MIT\n * Copyright (c) 2026 KapishDima\n *\n * Modifications:\n * - hermetic-ize fontFamily (use inherit / monospace, not Geist CSS vars)\n * - strip \"use client\" directive (re-added at shadcn-registry export time)\n */\n\nimport { Easing, interpolate, useCurrentFrame } from \"remotion\";\nimport * as palette from \"../../lib/palette\";\n\nexport interface CodeDiffWipeProps {\n before?: string;\n after?: string;\n language?: string;\n background?: string;\n accent?: string;\n transitionStart?: number;\n transitionDuration?: number;\n showHandle?: boolean;\n speed?: number;\n className?: string;\n}\n\nconst DEFAULT_BEFORE = `function getUser(id) {\n return fetch('/api/user/' + id)\n .then(function (res) {\n return res.json();\n })\n .then(function (data) {\n if (data.error) {\n throw new Error(data.error);\n }\n return data.user;\n });\n}`;\n\nconst DEFAULT_AFTER = `async function getUser(id: string) {\n const res = await fetch(\\`/api/user/\\${id}\\`);\n const { user, error } = await res.json();\n if (error) throw new Error(error);\n return user;\n}`;\n\nexport function CodeDiffWipe({\n before = DEFAULT_BEFORE,\n after = DEFAULT_AFTER,\n language = \"tsx\",\n background = palette.BG,\n accent = palette.ACCENT,\n transitionStart = 20,\n transitionDuration = 60,\n showHandle = true,\n speed = 1,\n className,\n}: CodeDiffWipeProps) {\n const frame = useCurrentFrame() * speed;\n\n const progress = interpolate(\n frame,\n [transitionStart, transitionStart + transitionDuration],\n [0, 1],\n {\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\",\n easing: Easing.inOut(Easing.cubic),\n },\n );\n\n const wipePercent = progress * 100;\n\n return (\n <div\n className={className}\n style={{\n position: \"absolute\",\n inset: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n background: palette.BG_DEEP,\n fontFamily:\n \"inherit\",\n }}\n >\n <div\n style={{\n position: \"relative\",\n width: 980,\n height: 560,\n borderRadius: 14,\n overflow: \"hidden\",\n background,\n border: `1px solid ${palette.BORDER}`,\n }}\n >\n {/* AFTER (bottom layer) */}\n <CodePane\n code={after}\n background={background}\n label=\"AFTER\"\n labelColor={accent}\n language={language}\n />\n\n {/* BEFORE (top layer, clipped) */}\n <div\n style={{\n position: \"absolute\",\n inset: 0,\n clipPath: `inset(0 ${wipePercent}% 0 0)`,\n }}\n >\n <CodePane\n code={before}\n background={background}\n label=\"BEFORE\"\n labelColor={palette.DANGER}\n language={language}\n dimmed\n />\n </div>\n\n {/* Handle */}\n {showHandle && wipePercent > 0 && wipePercent < 100 && (\n <div\n style={{\n position: \"absolute\",\n top: 0,\n bottom: 0,\n left: `${wipePercent}%`,\n width: 2,\n background: accent,\n transform: \"translateX(-1px)\",\n }}\n >\n <div\n style={{\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n width: 40,\n height: 40,\n borderRadius: \"50%\",\n background: accent,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n color: palette.BG,\n fontSize: 18,\n fontWeight: 700,\n }}\n >\n {\"<>\"}\n </div>\n </div>\n )}\n </div>\n </div>\n );\n}\n\nfunction CodePane({\n code,\n background,\n label,\n labelColor,\n language,\n dimmed,\n}: {\n code: string;\n background: string;\n label: string;\n labelColor: string;\n language: string;\n dimmed?: boolean;\n}) {\n const lines = code.split(\"\\n\");\n return (\n <div\n style={{\n position: \"absolute\",\n inset: 0,\n background,\n display: \"flex\",\n flexDirection: \"column\",\n }}\n >\n {/* Header */}\n <div\n style={{\n height: 44,\n padding: \"0 18px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n borderBottom: \"1px solid rgba(255,255,255,0.06)\",\n background: \"rgba(255,255,255,0.02)\",\n }}\n >\n <div\n style={{\n color: palette.TEXT_MUTED,\n fontSize: 13,\n fontFamily:\n \"monospace\",\n }}\n >\n {language}\n </div>\n <div\n style={{\n fontSize: 11,\n fontWeight: 700,\n letterSpacing: \"0.12em\",\n color: labelColor,\n padding: \"4px 10px\",\n borderRadius: 999,\n background: `${labelColor}1a`,\n border: `1px solid ${labelColor}55`,\n }}\n >\n {label}\n </div>\n </div>\n\n {/* Code */}\n <pre\n style={{\n flex: 1,\n margin: 0,\n padding: 24,\n color: dimmed ? palette.TEXT_MUTED : palette.TEXT,\n fontSize: 16,\n lineHeight: 1.6,\n fontFamily:\n \"monospace\",\n overflow: \"hidden\",\n whiteSpace: \"pre\",\n }}\n >\n {lines.map((line, i) => (\n <div key={i} style={{ display: \"flex\" }}>\n <span\n style={{\n width: 32,\n textAlign: \"right\",\n marginRight: 16,\n color: palette.BORDER,\n userSelect: \"none\",\n }}\n >\n {i + 1}\n </span>\n <span>{line || \" \"}</span>\n </div>\n ))}\n </pre>\n </div>\n );\n}\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport { ChromaticAberrationWipe, chromaticAberrationWipe } from './index';\n\nconst paramsSchema = z.object({\n direction: z.enum(['left', 'right']).default('left').describe('Slide direction the OLD scene exits toward.'),\n aberrationOffset: z.number().min(0).max(40).default(12).describe('Pixel offset between R/B channels at peak. 8–16 reads as digital glitch.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'chromatic-aberration-wipe',\n component: ChromaticAberrationWipe,\n name: 'Chromatic Aberration Wipe',\n category: 'transitions',\n kind: 'transition',\n version: '0.2.0',\n\n intent: 'glitch-cut',\n description:\n '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.',\n useWhen:\n 'Tech/digital aesthetic, glitchy product demos, \"system breach\" moments. Avoid for editorial / serious content (the aberration looks like a CRT artifact).',\n pairsWith: ['glass-code-block', 'terminal-simulator'],\n avoidWith: ['cinematic-title', 'changelog-bite'],\n tier: 'niche',\n useCase: ['transition'],\n tags: ['transition', 'wipe', 'chromatic', 'aberration', 'rgb-split', 'glitch', 'standalone'],\n mood: ['glitchy', 'tech-demo'],\n\n paramsSchema,\n propDefaults: { direction: 'left', aberrationOffset: 12 },\n createPresentation: (params: Params) => chromaticAberrationWipe(params as never),\n\n examples: [\n { name: 'digital-glitch', mood: ['glitchy', 'tech-demo'], params: { direction: 'left', aberrationOffset: 12 } },\n ],\n\n textParam: null,\n subtextParam: null,\n tokens: [],\n\n durationInFrames: 30,\n fps: 30,\n width: 1920,\n height: 1080,\n\n preview: { thumbnailFrame: 15, mode: 'loop' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport * as palette from '../../lib/palette';\nimport { CodeDiffWipe } from './index';\n\nconst paramsSchema = z.object({\n before: z.string().optional().describe('Source code shown on the left of the wipe (the \"before\" state). Defaults to a JS callback example.'),\n after: z.string().optional().describe('Source code revealed by the wipe (the \"after\" state). Defaults to an async/await TS rewrite of `before`.'),\n language: z.string().default('tsx').describe('Language label rendered in the pane header (e.g. \"tsx\", \"py\", \"rust\"). Cosmetic only — no syntax highlighting is applied.'),\n background: z.string().default(palette.BG).describe('Code pane background color.'),\n accent: z.string().default(palette.ACCENT).describe('Accent color for the AFTER label, the wipe handle, and its glow.'),\n transitionStart: z.number().int().min(0).default(20).describe('Frame at which the wipe begins.'),\n transitionDuration: z.number().int().min(6).max(180).default(60).describe('Frames the wipe takes to complete.'),\n showHandle: z.boolean().default(true).describe('Whether to draw the vertical handle + circular grip at the wipe boundary.'),\n speed: z.number().min(0.25).max(4).default(1).describe('Playback speed multiplier.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'code-diff-wipe',\n component: CodeDiffWipe,\n name: 'Code Diff Wipe',\n category: 'transitions',\n kind: 'component',\n version: '0.1.1',\n\n intent: 'reveal-code-diff',\n description:\n '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 — drop in as a scene primitive when the story is \"this code became that code\".',\n useWhen:\n 'Tech-demo refactor beats, \"callbacks → 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.',\n pairsWith: ['terminal-simulator', 'glass-code-block', 'live-code-compilation'],\n avoidWith: ['glitch-cut', 'chromatic-aberration-wipe'],\n tier: 'standard',\n useCase: ['transition', 'explainer'],\n tags: ['transition', 'wipe', 'code', 'diff', 'before-after', 'tech-demo', 'standalone'],\n mood: ['tech-demo', 'editorial', 'minimal'],\n\n paramsSchema,\n propDefaults: {\n language: 'tsx',\n background: palette.BG,\n accent: palette.ACCENT,\n transitionStart: 20,\n transitionDuration: 60,\n showHandle: true,\n speed: 1,\n },\n\n examples: [\n {\n name: 'callbacks-to-async',\n mood: ['tech-demo'],\n params: { language: 'tsx', accent: palette.ACCENT, transitionStart: 20, transitionDuration: 60 },\n description: 'Default JS callbacks → async/await TS rewrite. Cyan accent.',\n },\n {\n name: 'python-rewrite',\n mood: ['editorial', 'minimal'],\n params: {\n language: 'py',\n accent: palette.WARNING,\n before: 'def get_user(id):\\n res = requests.get(f\"/api/user/{id}\")\\n return res.json()',\n 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())',\n transitionDuration: 75,\n },\n description: 'Slower, amber accent — for a more documentary refactor pace.',\n },\n ],\n\n textParam: 'before',\n subtextParam: 'after',\n tokens: [\n { propPath: 'accent', cssVar: '--cf-accent', fallback: palette.ACCENT, brandKitPath: 'colors.accent' },\n { propPath: 'background', cssVar: '--cf-surface', fallback: palette.BG, brandKitPath: 'colors.surface' },\n ],\n\n durationInFrames: 120,\n fps: 30,\n width: 1920,\n height: 1080,\n\n preview: { thumbnailFrame: 50, mode: 'oneshot', defaultExample: 'callbacks-to-async' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport { DirectionalWipe, directionalWipe } from './index';\n\nconst paramsSchema = z.object({\n direction: z.enum(['left', 'right', 'up', 'down']).default('left').describe('Direction the OLD scene exits toward.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'directional-wipe',\n component: DirectionalWipe,\n name: 'Directional Wipe',\n category: 'transitions',\n kind: 'transition',\n version: '0.2.0',\n\n intent: 'reveal-mask',\n description:\n 'Hard-edge directional wipe between two scenes. Standalone component (renders both scenes as from/to ReactNodes). Four directions; clean and quick.',\n useWhen:\n '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).',\n pairsWith: ['mesh-gradient-bg'],\n avoidWith: ['frosted-glass-wipe', 'chromatic-aberration-wipe'],\n tier: 'standard',\n useCase: ['transition'],\n tags: ['transition', 'wipe', 'directional', 'hard-edge', 'standalone'],\n mood: ['minimal', 'tech-demo'],\n\n paramsSchema,\n propDefaults: { direction: 'left' },\n createPresentation: (params: Params) => directionalWipe(params as never),\n\n examples: [\n { name: 'left-wipe', mood: ['minimal'], params: { direction: 'left' } },\n { name: 'up-wipe', mood: ['minimal'], params: { direction: 'up' } },\n ],\n\n textParam: null,\n subtextParam: null,\n tokens: [],\n\n durationInFrames: 30,\n fps: 30,\n width: 1920,\n height: 1080,\n\n preview: { thumbnailFrame: 15, mode: 'loop' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport { FrostedGlassWipe, frostedGlassWipe } from './index';\n\nconst paramsSchema = z.object({\n glassBlur: z.number().min(0).max(60).default(24).describe('Frosted-glass backdrop-filter blur radius in pixels.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'frosted-glass-wipe',\n component: FrostedGlassWipe,\n name: 'Frosted Glass Wipe',\n category: 'transitions',\n kind: 'transition',\n version: '0.2.0',\n\n intent: 'reveal-mask',\n description:\n '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 — use as a scene-pair component.',\n useWhen:\n '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.',\n pairsWith: ['mesh-gradient-bg', 'shimmer-sweep'],\n avoidWith: ['light-leak', 'ink-wipe'],\n tier: 'standard',\n useCase: ['transition'],\n tags: ['transition', 'wipe', 'glass', 'frosted', 'glassmorphism', 'standalone'],\n mood: ['cinematic', 'corporate', 'minimal'],\n\n paramsSchema,\n propDefaults: { glassBlur: 24 },\n createPresentation: (params: Params) => frostedGlassWipe(params as never),\n\n examples: [\n { name: 'glossy-reveal', mood: ['soft', 'corporate'], params: { glassBlur: 24 } },\n ],\n\n textParam: null,\n subtextParam: null,\n tokens: [],\n\n durationInFrames: 30,\n fps: 30,\n width: 1920,\n height: 1080,\n\n preview: { thumbnailFrame: 15, mode: 'loop' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport { GlitchCut, glitchCut } from './index';\n\nconst paramsSchema = z.object({\n intensity: z.number().min(0).max(1).default(0.5).describe('Glitch intensity. 0.4–0.6 reads as deliberate; >0.8 feels like a CRT failure.'),\n slices: z.number().int().min(1).max(20).default(5).describe('Number of horizontal slice displacement bands. More = more chaos.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'glitch-cut',\n component: GlitchCut,\n name: 'Glitch Cut',\n category: 'transitions',\n kind: 'transition',\n version: '0.1.0',\n\n intent: 'glitch-cut',\n description:\n '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.',\n useWhen:\n '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 — pick one).',\n pairsWith: ['terminal-simulator', 'glass-code-block', 'matrix-decode'],\n avoidWith: ['light-leak', 'luma-matte', 'chromatic-aberration-wipe'],\n tier: 'niche',\n useCase: ['transition'],\n tags: ['transition', 'glitch', 'cut', 'rgb-split', 'digital'],\n mood: ['glitchy', 'tech-demo', 'aggressive'],\n\n paramsSchema,\n propDefaults: { intensity: 0.5, slices: 5 },\n createPresentation: (params: Params) => glitchCut(params as never),\n\n examples: [\n { name: 'subtle-glitch', mood: ['tech-demo'], params: { intensity: 0.4, slices: 3 } },\n { name: 'heavy-fail', mood: ['glitchy', 'aggressive'], params: { intensity: 0.8, slices: 8 } },\n ],\n\n textParam: null,\n subtextParam: null,\n tokens: [],\n\n durationInFrames: 30,\n fps: 30,\n width: 1920,\n height: 1080,\n\n preview: { thumbnailFrame: 15, mode: 'loop', defaultExample: 'subtle-glitch' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport { GridPixelateWipe, gridPixelateWipe } from './index';\n\nconst paramsSchema = z.object({\n cols: z.number().int().min(2).max(48).default(12).describe('Grid column count. Higher = finer pixelation.'),\n rows: z.number().int().min(2).max(27).default(7).describe('Grid row count. Pair with `cols` to match the frame aspect.'),\n pattern: z.enum(['wave', 'diagonal', 'spiral']).default('wave').describe('Cell-activation order. `wave` = radial from center, `diagonal` = top-left to bottom-right, `spiral` = perimeter inward.'),\n cellColor: z.string().default('#0b0b10').describe('Mosaic cell color that flashes over the cut.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'grid-pixelate-wipe',\n component: GridPixelateWipe,\n name: 'Grid Pixelate Wipe',\n category: 'transitions',\n kind: 'transition',\n version: '0.2.0',\n\n intent: 'reveal-mask',\n description:\n '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).',\n useWhen:\n '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 — the grid reads as too digital.',\n pairsWith: ['terminal-simulator', 'matrix-decode', 'glass-code-block'],\n avoidWith: ['light-leak', 'ink-wipe', 'frosted-glass-wipe'],\n tier: 'niche',\n useCase: ['transition'],\n tags: ['transition', 'wipe', 'grid', 'pixelate', 'mosaic', 'standalone'],\n mood: ['tech-demo', 'playful', 'glitchy'],\n\n paramsSchema,\n propDefaults: { cols: 12, rows: 7, pattern: 'wave', cellColor: '#0b0b10' },\n createPresentation: (params: Params) => gridPixelateWipe(params as never),\n\n examples: [\n { name: 'radial-wave', mood: ['tech-demo'], params: { cols: 12, rows: 7, pattern: 'wave', cellColor: '#0b0b10' } },\n { name: 'fine-spiral', mood: ['glitchy'], params: { cols: 24, rows: 14, pattern: 'spiral', cellColor: '#0b0b10' } },\n ],\n\n textParam: null,\n subtextParam: null,\n tokens: [],\n\n durationInFrames: 30,\n fps: 30,\n width: 1920,\n height: 1080,\n\n preview: { thumbnailFrame: 15, mode: 'loop' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport * as palette from '../../lib/palette';\nimport { InkWipe, inkWipe } from './index';\n\nconst paramsSchema = z.object({\n direction: z.enum(['left', 'right', 'up', 'down']).default('left').describe('Direction the ink travels.'),\n color: z.string().default('black').describe('Color of the ink leading edge.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'ink-wipe',\n component: InkWipe,\n name: 'Ink Wipe',\n category: 'transitions',\n kind: 'transition',\n version: '0.1.1',\n\n intent: 'reveal-mask',\n description:\n '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.',\n useWhen:\n '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.',\n pairsWith: ['lower-third', 'parallax', 'vignette'],\n avoidWith: ['light-leak', 'frosted-glass-wipe'],\n tier: 'niche',\n useCase: ['transition'],\n tags: ['transition', 'wipe', 'ink', 'edge', 'directional'],\n mood: ['editorial', 'cinematic'],\n\n paramsSchema,\n propDefaults: { direction: 'left', color: 'black' },\n createPresentation: (params: Params) => inkWipe(params as never),\n\n examples: [\n { name: 'classic-black', mood: ['editorial'], params: { direction: 'left', color: 'black' } },\n { name: 'brand-tinted', mood: ['corporate'], params: { direction: 'right', color: palette.ACCENT } },\n ],\n\n textParam: null,\n subtextParam: null,\n tokens: [\n { propPath: 'color', cssVar: '--cf-accent', fallback: 'black', brandKitPath: 'colors.accent' },\n ],\n\n durationInFrames: 30,\n fps: 30,\n width: 1920,\n height: 1080,\n\n preview: { thumbnailFrame: 15, mode: 'loop', defaultExample: 'classic-black' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport { KineticTypeMask, kineticTypeMask } from './index';\n\nconst paramsSchema = z.object({\n text: z.string().min(1).max(12).default('NEXT').describe('Word used as the type mask. Short ALL-CAPS reads best (3–6 letters). The new scene is revealed through the glyphs as they scale up.'),\n maxScale: z.number().min(20).max(400).default(90).describe('Final glyph scale — must be large enough to fully consume the frame.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'kinetic-type-mask',\n component: KineticTypeMask,\n name: 'Kinetic Type Mask',\n category: 'transitions',\n kind: 'transition',\n version: '0.2.0',\n\n intent: 'reveal-mask',\n description:\n '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).',\n useWhen:\n 'Section breaks with a strong verbal beat (\"NEXT\", \"DROP\", \"LIVE\"), title-driven reels, podcast chapter changes. The word should reinforce a story beat — avoid generic placeholders. Skip for fast-cut montages where the hold reads as too slow, and avoid stacking with other text-heavy transitions.',\n pairsWith: ['headline', 'lower-third', 'mesh-gradient-bg'],\n avoidWith: ['glitch-cut', 'chromatic-aberration-wipe', 'directional-wipe'],\n tier: 'standard',\n useCase: ['transition'],\n tags: ['transition', 'mask', 'type', 'kinetic', 'typography', 'standalone'],\n mood: ['editorial', 'aggressive', 'cinematic'],\n\n paramsSchema,\n propDefaults: { text: 'NEXT', maxScale: 90 },\n createPresentation: (params: Params) => kineticTypeMask(params as never),\n\n examples: [\n { name: 'next-beat', mood: ['aggressive', 'tech-demo'], params: { text: 'NEXT', maxScale: 90 } },\n ],\n\n textParam: 'text',\n subtextParam: null,\n tokens: [],\n\n durationInFrames: 30,\n fps: 30,\n width: 1920,\n height: 1080,\n\n preview: { thumbnailFrame: 15, mode: 'loop' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport { LightLeak, lightLeak } from './index';\n\nconst paramsSchema = z.object({\n hue: z.number().min(0).max(360).default(30).describe('Hue rotation in degrees. 30 = warm amber (canonical analog leak); 200 = cool blue.'),\n seed: z.number().int().min(0).default(0).describe('Random seed for variation. Reserved for future variant tuning.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'light-leak',\n component: LightLeak,\n name: 'Light Leak',\n category: 'transitions',\n kind: 'transition',\n version: '0.1.0',\n\n intent: 'film-leak',\n description:\n '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>`.',\n useWhen:\n '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).',\n pairsWith: ['grain', 'vignette', 'color-grade', 'parallax'],\n avoidWith: ['glitch-cut', 'chromatic-aberration-wipe'],\n tier: 'niche',\n useCase: ['grade', 'transition'],\n tags: ['transition', 'light-leak', 'analog', 'film', 'warm'],\n mood: ['cinematic', 'editorial', 'soft'],\n\n paramsSchema,\n propDefaults: { hue: 30, seed: 0 },\n createPresentation: (params: Params) => lightLeak(params),\n\n examples: [\n { name: 'warm-amber', mood: ['cinematic'], params: { hue: 30, seed: 0 } },\n { name: 'cool-cyan', mood: ['editorial'], params: { hue: 190, seed: 0 } },\n ],\n\n textParam: null,\n subtextParam: null,\n tokens: [\n { propPath: 'hue', cssVar: '--cf-accent-hue', fallback: '30', brandKitPath: 'colors.accentHue' },\n ],\n\n durationInFrames: 30,\n fps: 30,\n width: 1920,\n height: 1080,\n\n preview: { thumbnailFrame: 15, mode: 'loop', defaultExample: 'warm-amber' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport { LumaMatte, lumaMatte } from './index';\n\nconst paramsSchema = z.object({\n matte: z.enum(['smoke', 'brush', 'geometric']).default('smoke').describe(\n 'Matte style. smoke: very soft 30px edge — dreamy. brush: medium 15px painterly. geometric: hard 5px — clean.',\n ),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'luma-matte',\n component: LumaMatte,\n name: 'Luma Matte',\n category: 'transitions',\n kind: 'transition',\n version: '0.1.0',\n\n intent: 'reveal-mask',\n description:\n '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.',\n useWhen:\n '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.',\n pairsWith: ['parallax', 'color-grade', 'cinematic-title'],\n avoidWith: ['ink-wipe', 'glitch-cut'],\n tier: 'standard',\n useCase: ['transition'],\n tags: ['transition', 'matte', 'luma', 'soft-edge', 'mask'],\n mood: ['cinematic', 'editorial', 'soft'],\n\n paramsSchema,\n propDefaults: { matte: 'smoke' },\n createPresentation: (params: Params) => lumaMatte(params as never),\n\n examples: [\n { name: 'smoke-dreamy', mood: ['cinematic', 'soft'], params: { matte: 'smoke' } },\n { name: 'brush-painterly', mood: ['editorial'], params: { matte: 'brush' } },\n { name: 'geometric-clean', mood: ['minimal'], params: { matte: 'geometric' } },\n ],\n\n textParam: null,\n subtextParam: null,\n tokens: [],\n\n durationInFrames: 30,\n fps: 30,\n width: 1920,\n height: 1080,\n\n preview: { thumbnailFrame: 15, mode: 'loop', defaultExample: 'smoke-dreamy' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport { Morph, morph } from './index';\n\nconst paramsSchema = z.object({\n type: z.enum(['dissolve', 'displacement']).default('dissolve').describe(\n 'Morph variant. dissolve: pure crossfade. displacement: crossfade + slight scale (entering grows, exiting shrinks) for organic feel.',\n ),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'morph',\n component: Morph,\n name: 'Morph',\n category: 'transitions',\n kind: 'transition',\n version: '0.1.0',\n\n intent: 'reveal-mask',\n description:\n 'Cross-dissolve / morph transition. The simplest and most-versatile transition; opacity crossfade by default, with optional displacement variant adding subtle scale dynamics.',\n useWhen:\n '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.',\n pairsWith: ['parallax', 'lower-third', 'color-grade'],\n avoidWith: ['glitch-cut', 'chromatic-aberration-wipe'],\n tier: 'standard',\n useCase: ['transition'],\n tags: ['transition', 'morph', 'dissolve', 'crossfade', 'simple'],\n mood: ['editorial', 'minimal', 'soft'],\n\n paramsSchema,\n propDefaults: { type: 'dissolve' },\n createPresentation: (params: Params) => morph(params as never),\n\n examples: [\n { name: 'pure-dissolve', mood: ['minimal'], params: { type: 'dissolve' } },\n { name: 'displacement-organic', mood: ['editorial'], params: { type: 'displacement' } },\n ],\n\n textParam: null,\n subtextParam: null,\n tokens: [],\n\n durationInFrames: 30,\n fps: 30,\n width: 1920,\n height: 1080,\n\n preview: { thumbnailFrame: 15, mode: 'loop', defaultExample: 'pure-dissolve' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport { SpatialPush, spatialPush } from './index';\n\nconst paramsSchema = z.object({\n direction: z.enum(['up', 'down', 'left', 'right']).default('up').describe('Edge the NEW scene pushes in from. `up` = enters from below (most common).'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'spatial-push',\n component: SpatialPush,\n name: 'Spatial Push',\n category: 'transitions',\n kind: 'transition',\n version: '0.2.0',\n\n intent: 'reveal-mask',\n description:\n '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.',\n useWhen:\n '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 — the spring settle reads as deliberate and would slow the cut.',\n pairsWith: ['mesh-gradient-bg', 'lower-third', 'parallax'],\n avoidWith: ['glitch-cut', 'chromatic-aberration-wipe', 'directional-wipe'],\n tier: 'standard',\n useCase: ['transition'],\n tags: ['transition', 'push', 'spatial', 'spring', 'ios', 'standalone'],\n mood: ['cinematic', 'corporate', 'minimal'],\n\n paramsSchema,\n propDefaults: { direction: 'up' },\n createPresentation: (params: Params) => spatialPush(params as never),\n\n examples: [\n { name: 'push-up', mood: ['tech-demo'], params: { direction: 'up' } },\n { name: 'push-left', mood: ['tech-demo'], params: { direction: 'left' } },\n ],\n\n textParam: null,\n subtextParam: null,\n tokens: [],\n\n durationInFrames: 30,\n fps: 30,\n width: 1920,\n height: 1080,\n\n preview: { thumbnailFrame: 15, mode: 'loop' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport * as palette from '../../lib/palette';\nimport { SwipeTransitionWipe, swipeTransitionWipe } from './index';\n\nconst paramsSchema = z.object({\n direction: z.enum(['left', 'right']).default('left').describe('Swipe direction the OLD scene exits toward.'),\n dimStrength: z.number().min(0).max(1).default(0.4).describe('Darkening of the outgoing scene as it leaves.'),\n parallaxFactor: z.number().min(0).max(1).default(0.6).describe('Parallax lag on the incoming scene. 0 = rigid slide.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'swipe-transition-wipe',\n component: SwipeTransitionWipe,\n name: 'Swipe Transition Wipe',\n category: 'transitions',\n kind: 'transition',\n version: '0.2.1',\n\n intent: 'reveal-mask',\n description:\n 'Polished swipe between two scenes with parallax + dim of the off-screen scene. Standalone showcase component with default gradient panels — pass sceneA/sceneB ReactNodes to use real content.',\n useWhen:\n 'Demo/showcase reels, podcast clip transitions where you want a designed look. The default colored gradient panels are nice for comparison videos.',\n pairsWith: ['mesh-gradient-bg', 'lower-third'],\n avoidWith: ['frosted-glass-wipe'],\n tier: 'standard',\n useCase: ['transition'],\n tags: ['transition', 'swipe', 'wipe', 'parallax', 'showcase', 'standalone'],\n mood: ['cinematic', 'corporate'],\n\n paramsSchema,\n propDefaults: { direction: 'left', dimStrength: 0.4, parallaxFactor: 0.6 },\n createPresentation: (params: Params) => swipeTransitionWipe(params as never),\n\n examples: [\n { name: 'designer-default', mood: ['tech-demo', 'corporate'], params: { direction: 'left', dimStrength: 0.4, parallaxFactor: 0.6 } },\n ],\n\n textParam: 'labelA',\n subtextParam: 'labelB',\n tokens: [\n { propPath: 'colorA1', cssVar: '--cf-accent', fallback: palette.ACCENT, brandKitPath: 'colors.accent' },\n { propPath: 'colorB1', cssVar: '--cf-accent-2', fallback: palette.VIOLET, brandKitPath: 'colors.accentMuted' },\n ],\n\n durationInFrames: 30,\n fps: 30,\n width: 1920,\n height: 1080,\n\n preview: { thumbnailFrame: 15, mode: 'loop' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport { ZoomThrough, zoomThrough } from './index';\n\nconst paramsSchema = z.object({\n zoomPoint: z.object({\n x: z.number().min(0).max(1).default(0.5).describe('Horizontal focal point, 0–1 normalized.'),\n y: z.number().min(0).max(1).default(0.5).describe('Vertical focal point, 0–1 normalized.'),\n }).default({ x: 0.5, y: 0.5 }).describe('Where the camera \"flies through\". Defaults to center.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'zoom-through',\n component: ZoomThrough,\n name: 'Zoom Through',\n category: 'transitions',\n kind: 'transition',\n version: '0.1.0',\n\n intent: 'reveal-mask',\n description:\n '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.',\n useWhen:\n '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 — the zoom takes time.',\n pairsWith: ['parallax', 'cinematic-title', 'light-leak'],\n avoidWith: ['glitch-cut', 'directional-wipe'],\n tier: 'standard',\n useCase: ['transition', 'emphasis'],\n tags: ['transition', 'zoom', 'camera', 'fly-through', 'perspective'],\n mood: ['cinematic', 'editorial'],\n\n paramsSchema,\n propDefaults: { zoomPoint: { x: 0.5, y: 0.5 } },\n createPresentation: (params: Params) => zoomThrough(params as never),\n\n examples: [\n { name: 'center-fly', mood: ['cinematic'], params: { zoomPoint: { x: 0.5, y: 0.5 } } },\n { name: 'top-corner', mood: ['cinematic'], params: { zoomPoint: { x: 0.3, y: 0.3 } } },\n ],\n\n textParam: null,\n subtextParam: null,\n tokens: [],\n\n durationInFrames: 45,\n fps: 30,\n width: 1920,\n height: 1080,\n\n preview: { thumbnailFrame: 22, mode: 'loop', defaultExample: 'center-fly' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport { ZoomThroughTransition } from './index';\n\nconst paramsSchema = z.object({\n targetScale: z.number().min(2).max(60).default(20).describe('Final scale factor. 20 = aggressive zoom-through; 8–10 = gentler push.'),\n transformOrigin: z.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.'),\n background: z.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.'),\n beatFrames: z.number().int().min(10).max(150).default(45).describe('Frames the zoom-through takes — its own beat, independent of the hosting sequence duration.'),\n speed: z.number().min(0.25).max(4).default(1).describe('Playback speed multiplier.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'zoom-through-transition',\n component: ZoomThroughTransition,\n name: 'Zoom Through Transition',\n category: 'transitions',\n kind: 'component',\n version: '0.1.2',\n\n intent: 'zoom-through',\n description:\n 'Aggressive zoom-through: a single content node (passed as children) scales up from 1× to a high target scale while fading at the end, leaving the background color filling the frame. Use as the bridge between two scenes — the next scene mounts after this primitive ends. Distinct from the cueframe-native `zoom-through` TransitionPresentation, which interpolates two real scenes.',\n useWhen:\n '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.',\n pairsWith: ['product-launch-trailer', 'mesh-gradient-bg', 'shimmer-sweep'],\n avoidWith: ['zoom-through', 'glitch-cut'],\n tier: 'standard',\n useCase: ['transition'],\n tags: ['transition', 'zoom', 'push', 'hero', 'standalone'],\n mood: ['cinematic', 'aggressive', 'tech-demo'],\n\n paramsSchema,\n propDefaults: {\n targetScale: 20,\n transformOrigin: 'center center',\n background: 'transparent',\n beatFrames: 45,\n speed: 1,\n },\n\n examples: [\n {\n name: 'scene-handoff',\n mood: ['cinematic'],\n params: { targetScale: 20, transformOrigin: 'center center', background: 'transparent', beatFrames: 45 },\n description: 'Content zooms through and fades, revealing the scene beneath — the default hand-off.',\n },\n {\n name: 'off-center-push',\n mood: ['aggressive', 'tech-demo'],\n params: { targetScale: 30, transformOrigin: '30% 70%', background: '#0a0a0a' },\n description: 'Steeper scale plus off-center origin for a parallax-flavored push into a dark scene.',\n },\n ],\n\n textParam: null,\n subtextParam: null,\n tokens: [\n { propPath: 'background', cssVar: '--cf-surface', fallback: 'white', brandKitPath: 'colors.surface' },\n ],\n\n durationInFrames: 60,\n fps: 30,\n width: 1920,\n height: 1080,\n\n preview: { thumbnailFrame: 40, mode: 'oneshot', defaultExample: 'logo-consume' },\n};\n","// @cueframe/primitives/transitions — scene-to-scene transitions\n\nimport type { Catalog } from '../lib/types';\n\n// Cueframe TransitionPresentation factories (kind: 'transition')\nexport { LightLeak, lightLeak } from './light-leak';\nexport { InkWipe, inkWipe } from './ink-wipe';\nexport { LumaMatte, lumaMatte } from './luma-matte';\nexport { GlitchCut, glitchCut } from './glitch-cut';\nexport { ZoomThrough, zoomThrough } from './zoom-through';\nexport { Morph, morph } from './morph';\n// Converted remocn wipes — now TransitionPresentation factories too (2026-07-06)\nexport { ChromaticAberrationWipe, chromaticAberrationWipe } from './chromatic-aberration-wipe';\nexport { DirectionalWipe, directionalWipe } from './directional-wipe';\nexport { FrostedGlassWipe, frostedGlassWipe } from './frosted-glass-wipe';\nexport { SwipeTransitionWipe, swipeTransitionWipe } from './swipe-transition-wipe';\nexport { GridPixelateWipe, gridPixelateWipe } from './grid-pixelate-wipe';\nexport { SpatialPush, spatialPush } from './spatial-push';\nexport { KineticTypeMask, kineticTypeMask } from './kinetic-type-mask';\n// Remocn standalone components (kind: 'component')\nexport { ZoomThroughTransition } from './zoom-through-transition';\nexport { CodeDiffWipe } from './code-diff-wipe';\n\nimport { config as chromaticAberrationWipe } from './chromatic-aberration-wipe/config';\nimport { config as codeDiffWipeCfg } from './code-diff-wipe/config';\nimport { config as directionalWipe } from './directional-wipe/config';\nimport { config as frostedGlassWipe } from './frosted-glass-wipe/config';\nimport { config as glitchCutCfg } from './glitch-cut/config';\nimport { config as gridPixelateWipeCfg } from './grid-pixelate-wipe/config';\nimport { config as inkWipeCfg } from './ink-wipe/config';\nimport { config as kineticTypeMaskCfg } from './kinetic-type-mask/config';\nimport { config as lightLeakCfg } from './light-leak/config';\nimport { config as lumaMatteCfg } from './luma-matte/config';\nimport { config as morphCfg } from './morph/config';\nimport { config as spatialPushCfg } from './spatial-push/config';\nimport { config as swipeTransitionWipe } from './swipe-transition-wipe/config';\nimport { config as zoomThroughCfg } from './zoom-through/config';\nimport { config as zoomThroughTransitionCfg } from './zoom-through-transition/config';\n\nexport const catalog: Catalog = [\n chromaticAberrationWipe, codeDiffWipeCfg, directionalWipe, frostedGlassWipe, glitchCutCfg,\n gridPixelateWipeCfg, inkWipeCfg, kineticTypeMaskCfg, lightLeakCfg, lumaMatteCfg,\n morphCfg, spatialPushCfg, swipeTransitionWipe, zoomThroughCfg, zoomThroughTransitionCfg,\n];\n"],"mappings":"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","names":["opacity","useMemo","AbsoluteFill","interpolate","jsx","jsxs","useMemo","AbsoluteFill","interpolate","jsx","useMemo","AbsoluteFill","interpolate","jsx","useMemo","AbsoluteFill","interpolate","jsx","scale","opacity","useMemo","AbsoluteFill","interpolate","jsx","interpolate","jsx","Easing","interpolate","jsx","Easing","interpolate","jsx","jsxs","useMemo","interpolate","jsx","jsxs","Easing","interpolate","jsx","jsxs","Easing","interpolate","jsx","interpolate","Easing","Easing","interpolate","useCurrentFrame","jsx","jsxs","useCurrentFrame","interpolate","Easing","z","paramsSchema","z","config","z","paramsSchema","z","config","z","paramsSchema","z","config","z","paramsSchema","z","config","z","paramsSchema","z","config","z","paramsSchema","z","config","z","paramsSchema","z","config","z","paramsSchema","z","config","z","paramsSchema","z","config","z","paramsSchema","z","config","z","paramsSchema","z","config","z","paramsSchema","z","config","z","paramsSchema","z","config","z","paramsSchema","z","config","config"]}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
// src/lib/text/contrast.ts
|
|
2
|
-
var FLOOR_TEXT = "#F7F2EA";
|
|
3
|
-
var FLOOR_SHADOW = "0 1px 6px rgba(0,0,0,0.55)";
|
|
4
|
-
function resolveContrast(opts) {
|
|
5
|
-
const brand = opts?.brandTextOnMedia;
|
|
6
|
-
const textColor = brand && brand.trim() ? brand : FLOOR_TEXT;
|
|
7
|
-
return { textColor, textShadow: opts?.behindSubject ? "none" : FLOOR_SHADOW };
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export {
|
|
11
|
-
FLOOR_TEXT,
|
|
12
|
-
FLOOR_SHADOW,
|
|
13
|
-
resolveContrast
|
|
14
|
-
};
|
|
15
|
-
//# sourceMappingURL=chunk-7RRPFPQK.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/text/contrast.ts"],"sourcesContent":["/**\n * Legibility floor for text-on-video surfaces.\n *\n * Only Captions/Karaoke baked a contrast shadow before this; every other text\n * primitive shipped raw `#171717`-on-transparent with no shadow and vanished on\n * real footage. This is the shared module the consolidation spec named but never\n * built. Default text color is an off-white (#F7F2EA) — softer than pure white,\n * resolved through the brand `colors.textOnMedia` first — plus the proven\n * two-layer drop shadow (lifted from Captions) so white text survives on any\n * video. behind-subject hosts (HeroText) opt out of the shadow because the\n * subject silhouette supplies the depth, but still get a real off-white color.\n */\n\nexport interface ContrastResult {\n textColor: string;\n textShadow: string;\n}\n\n/**\n * Single source of truth for the legibility floor. Every text primitive's\n * default color + baked shadow derive from these — import them rather than\n * re-typing the literals, so the floor changes in exactly one place.\n */\nexport const FLOOR_TEXT = '#F7F2EA';\n// A tight, near-invisible legibility floor: enough to keep off-white text from\n// dissolving on bright footage, without reading as a decorative halo. (Was a\n// heavier `0 2px 12px` two-layer drop — softened when decorative shadows were\n// removed across the primitives.)\nexport const FLOOR_SHADOW = '0 1px 6px rgba(0,0,0,0.55)';\n\nexport function resolveContrast(opts?: {\n brandTextOnMedia?: string;\n behindSubject?: boolean;\n}): ContrastResult {\n const brand = opts?.brandTextOnMedia;\n const textColor = brand && brand.trim() ? brand : FLOOR_TEXT;\n return { textColor, textShadow: opts?.behindSubject ? 'none' : FLOOR_SHADOW };\n}\n"],"mappings":";AAuBO,IAAM,aAAa;AAKnB,IAAM,eAAe;AAErB,SAAS,gBAAgB,MAGb;AACjB,QAAM,QAAQ,MAAM;AACpB,QAAM,YAAY,SAAS,MAAM,KAAK,IAAI,QAAQ;AAClD,SAAO,EAAE,WAAW,YAAY,MAAM,gBAAgB,SAAS,aAAa;AAC9E;","names":[]}
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
// src/lib/schema.ts
|
|
2
|
-
import { zodToJsonSchema } from "zod-to-json-schema";
|
|
3
|
-
function zodToJsonSchemaFor(schema, name) {
|
|
4
|
-
return zodToJsonSchema(schema, {
|
|
5
|
-
name,
|
|
6
|
-
target: "jsonSchema7",
|
|
7
|
-
$refStrategy: "none"
|
|
8
|
-
});
|
|
9
|
-
}
|
|
10
|
-
function zodToDefaults(schema) {
|
|
11
|
-
const def = schema._def;
|
|
12
|
-
if (def.typeName !== "ZodObject") {
|
|
13
|
-
return {};
|
|
14
|
-
}
|
|
15
|
-
const shape = schema.shape;
|
|
16
|
-
const out = {};
|
|
17
|
-
for (const [key, field] of Object.entries(shape)) {
|
|
18
|
-
const fieldDef = field._def;
|
|
19
|
-
if (fieldDef.typeName === "ZodDefault" && typeof fieldDef.defaultValue === "function") {
|
|
20
|
-
out[key] = fieldDef.defaultValue();
|
|
21
|
-
} else if (fieldDef.typeName === "ZodOptional" && fieldDef.innerType) {
|
|
22
|
-
const innerDef = fieldDef.innerType._def;
|
|
23
|
-
if (innerDef.typeName === "ZodDefault" && typeof innerDef.defaultValue === "function") {
|
|
24
|
-
out[key] = innerDef.defaultValue();
|
|
25
|
-
}
|
|
26
|
-
} else if (fieldDef.typeName === "ZodObject") {
|
|
27
|
-
const nested = zodToDefaults(field);
|
|
28
|
-
if (Object.keys(nested).length > 0) {
|
|
29
|
-
out[key] = nested;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
return out;
|
|
34
|
-
}
|
|
35
|
-
function zodToControls(schema) {
|
|
36
|
-
const def = schema._def;
|
|
37
|
-
if (def.typeName !== "ZodObject") return [];
|
|
38
|
-
const shape = schema.shape;
|
|
39
|
-
const controls = [];
|
|
40
|
-
for (const [name, field] of Object.entries(shape)) {
|
|
41
|
-
const control = fieldToControl(name, field);
|
|
42
|
-
if (control) controls.push(control);
|
|
43
|
-
}
|
|
44
|
-
return controls;
|
|
45
|
-
}
|
|
46
|
-
function fieldToControl(name, field) {
|
|
47
|
-
let current = field;
|
|
48
|
-
let required = true;
|
|
49
|
-
let defaultValue;
|
|
50
|
-
while (true) {
|
|
51
|
-
const def2 = current._def;
|
|
52
|
-
if (def2.typeName === "ZodOptional" && def2.innerType) {
|
|
53
|
-
required = false;
|
|
54
|
-
current = def2.innerType;
|
|
55
|
-
continue;
|
|
56
|
-
}
|
|
57
|
-
if (def2.typeName === "ZodDefault" && def2.innerType) {
|
|
58
|
-
required = false;
|
|
59
|
-
if (typeof def2.defaultValue === "function") defaultValue = def2.defaultValue();
|
|
60
|
-
current = def2.innerType;
|
|
61
|
-
continue;
|
|
62
|
-
}
|
|
63
|
-
break;
|
|
64
|
-
}
|
|
65
|
-
const def = current._def;
|
|
66
|
-
const description = current.description;
|
|
67
|
-
const label = humanize(name);
|
|
68
|
-
switch (def.typeName) {
|
|
69
|
-
case "ZodString": {
|
|
70
|
-
const looksLikeColor = /color|colour|hex/i.test(name);
|
|
71
|
-
return {
|
|
72
|
-
name,
|
|
73
|
-
label,
|
|
74
|
-
description,
|
|
75
|
-
type: looksLikeColor ? "color" : "string",
|
|
76
|
-
defaultValue,
|
|
77
|
-
required
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
case "ZodNumber": {
|
|
81
|
-
let min;
|
|
82
|
-
let max;
|
|
83
|
-
for (const check of def.checks ?? []) {
|
|
84
|
-
if (check.kind === "min" && typeof check.value === "number") min = check.value;
|
|
85
|
-
if (check.kind === "max" && typeof check.value === "number") max = check.value;
|
|
86
|
-
}
|
|
87
|
-
const step = inferStep(min, max);
|
|
88
|
-
return { name, label, description, type: "number", defaultValue, min, max, step, required };
|
|
89
|
-
}
|
|
90
|
-
case "ZodBoolean": {
|
|
91
|
-
return { name, label, description, type: "boolean", defaultValue, required };
|
|
92
|
-
}
|
|
93
|
-
case "ZodEnum": {
|
|
94
|
-
return {
|
|
95
|
-
name,
|
|
96
|
-
label,
|
|
97
|
-
description,
|
|
98
|
-
type: "select",
|
|
99
|
-
defaultValue,
|
|
100
|
-
options: def.values,
|
|
101
|
-
required
|
|
102
|
-
};
|
|
103
|
-
}
|
|
104
|
-
default:
|
|
105
|
-
return null;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
function humanize(name) {
|
|
109
|
-
return name.replace(/([A-Z])/g, " $1").replace(/[-_]/g, " ").replace(/\s+/g, " ").trim().replace(/^./, (c) => c.toUpperCase());
|
|
110
|
-
}
|
|
111
|
-
function inferStep(min, max) {
|
|
112
|
-
if (min === void 0 || max === void 0) return 1;
|
|
113
|
-
const range = max - min;
|
|
114
|
-
if (range <= 1) return 0.01;
|
|
115
|
-
if (range <= 10) return 0.1;
|
|
116
|
-
if (range <= 100) return 1;
|
|
117
|
-
return Math.max(1, Math.round(range / 100));
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
export {
|
|
121
|
-
zodToJsonSchemaFor,
|
|
122
|
-
zodToDefaults,
|
|
123
|
-
zodToControls
|
|
124
|
-
};
|
|
125
|
-
//# sourceMappingURL=chunk-DH5TRZK2.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/schema.ts"],"sourcesContent":["/**\n * Zod → JSON Schema → controls / defaults.\n *\n * One canonical zod schema per primitive (declared in `config.ts`); this\n * module derives:\n * - JSON Schema for the agent's `apply_template` validation (Ajv).\n * - Prop defaults (materialized from `.default()` calls).\n * - Customizer controls for the drawer UI.\n *\n * No drift: all three derive from the same source.\n */\n\nimport { z } from 'zod';\nimport { zodToJsonSchema } from 'zod-to-json-schema';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// JSON Schema (for Ajv validation in apply_template)\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport function zodToJsonSchemaFor(\n schema: z.ZodTypeAny,\n name: string,\n): Record<string, unknown> {\n return zodToJsonSchema(schema, {\n name,\n target: 'jsonSchema7',\n $refStrategy: 'none',\n }) as Record<string, unknown>;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Defaults (materialize from zod .default() calls)\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Walk a zod schema and extract all `.default()` values into a flat object.\n *\n * Supports `ZodObject` at the top level. Nested objects are walked\n * recursively; arrays / unions / records are skipped (their defaults must\n * be declared at the array level via `.default([...])`).\n */\nexport function zodToDefaults(\n schema: z.ZodTypeAny,\n): Record<string, unknown> {\n const def = (schema as { _def: { typeName: string } })._def;\n if (def.typeName !== 'ZodObject') {\n return {};\n }\n const shape = (schema as unknown as { shape: Record<string, z.ZodTypeAny> }).shape;\n const out: Record<string, unknown> = {};\n for (const [key, field] of Object.entries(shape)) {\n const fieldDef = (field as { _def: { typeName: string; defaultValue?: () => unknown; innerType?: z.ZodTypeAny } })._def;\n if (fieldDef.typeName === 'ZodDefault' && typeof fieldDef.defaultValue === 'function') {\n out[key] = fieldDef.defaultValue();\n } else if (fieldDef.typeName === 'ZodOptional' && fieldDef.innerType) {\n const innerDef = (fieldDef.innerType as { _def: { typeName: string; defaultValue?: () => unknown } })._def;\n if (innerDef.typeName === 'ZodDefault' && typeof innerDef.defaultValue === 'function') {\n out[key] = innerDef.defaultValue();\n }\n } else if (fieldDef.typeName === 'ZodObject') {\n const nested = zodToDefaults(field);\n if (Object.keys(nested).length > 0) {\n out[key] = nested;\n }\n }\n }\n return out;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Controls (drawer UI customizer)\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport type ControlType = 'string' | 'number' | 'boolean' | 'select' | 'color';\n\nexport interface ControlConfig {\n /** Field name in the params object (top-level only — nested not supported). */\n name: string;\n /** Display label (defaults to humanized field name). */\n label?: string;\n /** Description for tooltip / hover (from zod `.describe()`). */\n description?: string;\n /** Control widget type. */\n type: ControlType;\n /** Default value (from zod `.default()`). */\n defaultValue?: unknown;\n /** For type='number': min/max/step. */\n min?: number;\n max?: number;\n step?: number;\n /** For type='select': allowed values. */\n options?: readonly string[];\n /** Whether the field is required. */\n required: boolean;\n}\n\n/**\n * Derive controls from a zod schema for the drawer customizer UI.\n *\n * Heuristics:\n * - `z.string()` → `'string'` (or `'color'` if name matches /color|colour|hex/i)\n * - `z.number()` → `'number'` with min/max from `.min()`/`.max()`\n * - `z.boolean()` → `'boolean'`\n * - `z.enum([...])` → `'select'` with options\n * - Wrapped in `.optional()` / `.default()` → unwrapped, defaultValue extracted\n */\nexport function zodToControls(schema: z.ZodTypeAny): ControlConfig[] {\n const def = (schema as { _def: { typeName: string } })._def;\n if (def.typeName !== 'ZodObject') return [];\n const shape = (schema as unknown as { shape: Record<string, z.ZodTypeAny> }).shape;\n\n const controls: ControlConfig[] = [];\n for (const [name, field] of Object.entries(shape)) {\n const control = fieldToControl(name, field);\n if (control) controls.push(control);\n }\n return controls;\n}\n\ninterface FieldDef {\n typeName: string;\n defaultValue?: () => unknown;\n innerType?: z.ZodTypeAny;\n description?: string;\n values?: readonly string[];\n checks?: { kind: string; value?: number }[];\n}\n\nfunction fieldToControl(\n name: string,\n field: z.ZodTypeAny,\n): ControlConfig | null {\n let current: z.ZodTypeAny = field;\n let required = true;\n let defaultValue: unknown;\n\n // Unwrap ZodOptional and ZodDefault, tracking required + default\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const def = (current as { _def: FieldDef })._def;\n if (def.typeName === 'ZodOptional' && def.innerType) {\n required = false;\n current = def.innerType;\n continue;\n }\n if (def.typeName === 'ZodDefault' && def.innerType) {\n required = false;\n if (typeof def.defaultValue === 'function') defaultValue = def.defaultValue();\n current = def.innerType;\n continue;\n }\n break;\n }\n\n const def = (current as { _def: FieldDef; description?: string })._def;\n const description = (current as { description?: string }).description;\n const label = humanize(name);\n\n switch (def.typeName) {\n case 'ZodString': {\n const looksLikeColor = /color|colour|hex/i.test(name);\n return {\n name,\n label,\n description,\n type: looksLikeColor ? 'color' : 'string',\n defaultValue,\n required,\n };\n }\n case 'ZodNumber': {\n let min: number | undefined;\n let max: number | undefined;\n for (const check of def.checks ?? []) {\n if (check.kind === 'min' && typeof check.value === 'number') min = check.value;\n if (check.kind === 'max' && typeof check.value === 'number') max = check.value;\n }\n const step = inferStep(min, max);\n return { name, label, description, type: 'number', defaultValue, min, max, step, required };\n }\n case 'ZodBoolean': {\n return { name, label, description, type: 'boolean', defaultValue, required };\n }\n case 'ZodEnum': {\n return {\n name,\n label,\n description,\n type: 'select',\n defaultValue,\n options: def.values,\n required,\n };\n }\n default:\n // Skip unsupported: ZodArray, ZodObject, ZodUnion, ZodRecord, etc.\n // Drawer doesn't render structured fields; agents author them via JSON.\n return null;\n }\n}\n\nfunction humanize(name: string): string {\n return name\n .replace(/([A-Z])/g, ' $1')\n .replace(/[-_]/g, ' ')\n .replace(/\\s+/g, ' ')\n .trim()\n .replace(/^./, (c) => c.toUpperCase());\n}\n\nfunction inferStep(min: number | undefined, max: number | undefined): number {\n if (min === undefined || max === undefined) return 1;\n const range = max - min;\n if (range <= 1) return 0.01;\n if (range <= 10) return 0.1;\n if (range <= 100) return 1;\n return Math.max(1, Math.round(range / 100));\n}\n"],"mappings":"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","names":["def"]}
|