@cueframe/kernel 0.1.0 → 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/composition/ops/compositionOps.d.ts +1 -0
- 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/validators/composition.d.ts +42 -25
- package/dist/_members/composition/validators/render.d.ts +32 -0
- package/dist/_members/core/render/compositionRender.d.ts +17 -1
- package/dist/_members/core/render/types.d.ts +31 -0
- package/dist/authoring/build-tools.js +6 -6
- package/dist/authoring/context.js +4 -4
- package/dist/authoring/tools.js +5 -5
- package/dist/authoring.js +11 -9
- package/dist/{chunk-ZB3C3HM7.js → chunk-7FO3ZJ43.js} +3 -0
- package/dist/{chunk-ODL7GQJG.js → chunk-AP6ZIVAV.js} +2 -2
- package/dist/{chunk-IBYQG46O.js → chunk-AQBREB5O.js} +1 -1
- package/dist/{chunk-YIOY2XEO.js → chunk-DK2ODBNT.js} +15 -5
- package/dist/{chunk-JRQVPFLF.js → chunk-HY3RIEZW.js} +1 -1
- package/dist/{chunk-GEA7E2FL.js → chunk-JJ6XD7NG.js} +151 -1
- package/dist/{chunk-COYMZ76S.js → chunk-MBCXCJOE.js} +1 -1
- package/dist/{chunk-37NJ27UU.js → chunk-OCFDUCF4.js} +3 -0
- package/dist/{chunk-VOO5FQSS.js → chunk-PDYO3DOJ.js} +5 -5
- package/dist/{chunk-MXFAADCQ.js → chunk-PODIYN2K.js} +9 -2
- package/dist/{chunk-NFEGPWGS.js → chunk-TOJEXFXL.js} +1 -1
- package/dist/{chunk-LM4WDUQJ.js → chunk-UHGSZZDI.js} +1 -1
- package/dist/{chunk-XWKZB5U5.js → chunk-ZWMV6DD2.js} +24 -1
- package/dist/compose/renderer.js +3 -3
- package/dist/compose.js +6 -6
- package/dist/composition/graphics-plan.js +1 -1
- package/dist/composition/ops.js +3 -3
- package/dist/composition/primitive-catalog.js +1 -1
- package/dist/composition/projection.js +19 -3
- package/dist/composition/validators.js +6 -4
- package/dist/composition-ops.js +8 -6
- package/dist/composition.js +24 -6
- package/dist/{context-OKX3HHFS.js → context-YWUZDG5X.js} +4 -4
- 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 +1 -0
- package/dist/media-model/testing.js +1071 -718
- package/dist/nle-export/server.js +328 -130
- package/dist/nle-export.js +7 -6
- package/package.json +13 -14
- 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/cloud-import/chunk-XKO6ZSWI.js +0 -162
- package/dist/_members/cloud-import/chunk-XKO6ZSWI.js.map +0 -1
- package/dist/_members/cloud-import/index.js +0 -241
- package/dist/_members/cloud-import/index.js.map +0 -1
- package/dist/_members/cloud-import/multipartUpload.js +0 -7
- package/dist/_members/cloud-import/multipartUpload.js.map +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 +0 -134
- 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
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/backgrounds/animated-bar-chart/index.tsx","../src/backgrounds/animated-line-chart/index.tsx","../src/backgrounds/dither-gradient-bg/index.tsx","../src/backgrounds/dynamic-grid/index.tsx","../src/backgrounds/ecosystem-constellation/index.tsx","../src/backgrounds/infinite-marquee/index.tsx","../src/backgrounds/mesh-gradient-bg/index.tsx","../src/backgrounds/perspective-marquee/index.tsx","../src/backgrounds/silk-flow-bg/index.tsx","../src/backgrounds/vector-field/index.tsx","../src/backgrounds/volumetric-rays/index.tsx","../src/backgrounds/animated-bar-chart/config.ts","../src/backgrounds/animated-line-chart/config.ts","../src/backgrounds/dither-gradient-bg/config.ts","../src/backgrounds/dynamic-grid/config.ts","../src/backgrounds/ecosystem-constellation/config.ts","../src/backgrounds/infinite-marquee/config.ts","../src/backgrounds/mesh-gradient-bg/config.ts","../src/backgrounds/perspective-marquee/config.ts","../src/backgrounds/silk-flow-bg/config.ts","../src/backgrounds/vector-field/config.ts","../src/backgrounds/volumetric-rays/config.ts","../src/backgrounds/index.ts"],"sourcesContent":["/**\n * Adapted from remocn (https://github.com/kapishdima/remocn) — MIT\n * Copyright (c) 2026 KapishDima\n *\n * Modifications (0.2.0 rebuild — launch-video grade):\n * - value labels count up with the bars; subtle horizontal gridlines\n * - per-bar vertical gradient + peak-bar accent (the number that lands)\n * - idle life after the entrance: gentle per-bar breathing on\n * incommensurate frequencies (no more dead-after-entrance freeze)\n * - refined defaults (indigo on blue-black, cyan peak) over neon-on-void\n */\n\nimport { spring, useCurrentFrame, useVideoConfig } from \"remotion\";\nimport * as palette from \"../../lib/palette\";\n\nexport interface AnimatedBarChartProps {\n data?: number[];\n labels?: string[];\n width?: number;\n height?: number;\n barColor?: string;\n /** Accent for the peak (max value) bar. Same as barColor to disable. */\n accentColor?: string;\n background?: string;\n /** Show counting value labels above bars (default true) */\n valueLabels?: boolean;\n gap?: number;\n staggerFrames?: number;\n speed?: number;\n className?: string;\n}\n\nexport function AnimatedBarChart({\n data = [35, 60, 45, 80, 55, 70, 90, 65],\n labels,\n width = 1000,\n height = 500,\n barColor = palette.ACCENT,\n accentColor = palette.TEAL,\n background = palette.BG,\n valueLabels = true,\n gap = 16,\n staggerFrames = 5,\n speed = 1,\n className,\n}: AnimatedBarChartProps) {\n const frame = useCurrentFrame() * speed;\n const { fps } = useVideoConfig();\n const t = frame / fps;\n\n const padding = 60;\n const labelSpace = labels ? 40 : 0;\n const valueSpace = valueLabels ? 34 : 0;\n const innerWidth = width - padding * 2;\n const innerHeight = height - padding * 2 - labelSpace - valueSpace;\n const max = Math.max(...data);\n const maxIndex = data.indexOf(max);\n const barWidth = (innerWidth - gap * (data.length - 1)) / data.length;\n const baseY = padding + valueSpace + innerHeight;\n\n const labelFontSize = 16;\n const labelPitch = barWidth + gap;\n const maxLabelChars = Math.max(1, Math.floor((labelPitch - 6) / (labelFontSize * 0.6)));\n const fitLabel = (text: string) =>\n text.length <= maxLabelChars\n ? text\n : text.slice(0, Math.max(0, maxLabelChars - 1)) + \"…\";\n\n const GRID_LINES = 4;\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,\n fontFamily: \"inherit\",\n }}\n >\n <svg width={width} height={height} viewBox={`0 0 ${width} ${height}`}>\n <defs>\n <linearGradient id=\"abc-bar\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor={barColor} stopOpacity={1} />\n <stop offset=\"100%\" stopColor={barColor} stopOpacity={0.55} />\n </linearGradient>\n <linearGradient id=\"abc-peak\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor={accentColor} stopOpacity={1} />\n <stop offset=\"100%\" stopColor={accentColor} stopOpacity={0.55} />\n </linearGradient>\n </defs>\n\n {/* Gridlines — quiet, under the data */}\n {Array.from({ length: GRID_LINES }, (_, g) => {\n const y = baseY - ((g + 1) / GRID_LINES) * innerHeight;\n return (\n <line\n key={`grid-${g}`}\n x1={padding}\n x2={padding + innerWidth}\n y1={y}\n y2={y}\n stroke=\"rgba(255,255,255,0.07)\"\n strokeWidth={1}\n />\n );\n })}\n <line\n x1={padding}\n x2={padding + innerWidth}\n y1={baseY}\n y2={baseY}\n stroke=\"rgba(255,255,255,0.22)\"\n strokeWidth={2}\n />\n\n {data.map((value, index) => {\n const targetHeight = (value / max) * innerHeight;\n const x = padding + index * (barWidth + gap);\n const isPeak = index === maxIndex && accentColor !== barColor;\n\n const enter = spring({\n frame: frame - index * staggerFrames,\n fps,\n config: { damping: 13, stiffness: 110, mass: 0.8 },\n from: 0,\n to: 1,\n });\n\n // Idle life: once entered, each bar breathes ±1.5% on its own\n // incommensurate frequency — alive, never synchronized.\n const breathe =\n enter > 0.98\n ? 1 + Math.sin(2 * Math.PI * (0.05 + index * 0.013) * t + index * 1.7) * 0.015\n : 1;\n const scaleY = enter * breathe;\n\n const y = baseY - targetHeight;\n const shown = Math.round(value * Math.min(1, enter));\n\n return (\n <g key={index}>\n <rect\n x={x}\n y={y}\n width={barWidth}\n height={targetHeight}\n rx={Math.min(8, barWidth / 4)}\n fill={isPeak ? \"url(#abc-peak)\" : \"url(#abc-bar)\"}\n style={{\n transform: `scaleY(${scaleY})`,\n transformOrigin: `${x + barWidth / 2}px ${baseY}px`,\n transformBox: \"view-box\",\n }}\n />\n {valueLabels && (\n <text\n x={x + barWidth / 2}\n y={baseY - targetHeight * scaleY - 12}\n fill={isPeak ? accentColor : \"rgba(255,255,255,0.85)\"}\n fontSize={18}\n fontWeight={700}\n textAnchor=\"middle\"\n style={{ opacity: Math.min(1, enter * 1.2), fontFamily: \"inherit\" }}\n >\n {shown}\n </text>\n )}\n {labels && labels[index] && (\n <text\n x={x + barWidth / 2}\n y={baseY + 28}\n fill=\"rgba(255,255,255,0.55)\"\n fontSize={labelFontSize}\n textAnchor=\"middle\"\n style={{ opacity: enter, fontFamily: \"inherit\" }}\n >\n {fitLabel(labels[index])}\n </text>\n )}\n </g>\n );\n })}\n </svg>\n </div>\n );\n}\n","/**\n * Adapted from remocn (https://github.com/kapishdima/remocn) — MIT\n * Copyright (c) 2026 KapishDima\n *\n * Modifications (0.2.0 rebuild — launch-video grade):\n * - gradient area fill under the line; horizontal-only grid (the full box\n * grid read as graph paper)\n * - endpoint value label counts up with the draw\n * - idle life: the endpoint dot PULSES after the draw completes (it used to\n * vanish at progress=1, freezing the chart dead)\n * - refined defaults (indigo line, cyan endpoint on blue-black)\n */\n\nimport { spring, useCurrentFrame, useVideoConfig } from \"remotion\";\nimport * as palette from \"../../lib/palette\";\n\nexport interface AnimatedLineChartProps {\n data?: number[];\n width?: number;\n height?: number;\n strokeColor?: string;\n /** Endpoint dot + value accent (default cyan) */\n accentColor?: string;\n strokeWidth?: number;\n background?: string;\n gridColor?: string;\n /** Show the endpoint value counting up (default true) */\n endpointValue?: boolean;\n showDot?: boolean;\n speed?: number;\n className?: string;\n}\n\nexport function AnimatedLineChart({\n data = [12, 19, 8, 15, 22, 18, 28, 25, 32],\n width = 1000,\n height = 500,\n strokeColor = palette.ACCENT,\n accentColor = palette.TEAL,\n strokeWidth = 4,\n background = palette.BG,\n gridColor = \"rgba(255,255,255,0.07)\",\n endpointValue = true,\n showDot = true,\n speed = 1,\n className,\n}: AnimatedLineChartProps) {\n const frame = useCurrentFrame() * speed;\n const { fps, durationInFrames } = useVideoConfig();\n const t = frame / fps;\n\n const padding = 60;\n const innerWidth = width - padding * 2;\n const innerHeight = height - padding * 2;\n\n const min = Math.min(...data);\n const max = Math.max(...data);\n const range = max - min || 1;\n\n const points = data.map((value, index) => {\n const x = padding + (index / (data.length - 1)) * innerWidth;\n const y = padding + innerHeight - ((value - min) / range) * innerHeight;\n return { x, y };\n });\n\n let pathLength = 0;\n for (let i = 1; i < points.length; i++) {\n const dx = points[i].x - points[i - 1].x;\n const dy = points[i].y - points[i - 1].y;\n pathLength += Math.sqrt(dx * dx + dy * dy);\n }\n\n const d = points\n .map((p, i) => `${i === 0 ? \"M\" : \"L\"}${p.x.toFixed(2)},${p.y.toFixed(2)}`)\n .join(\" \");\n const areaD = `${d} L${(padding + innerWidth).toFixed(2)},${(padding + innerHeight).toFixed(2)} L${padding},${(padding + innerHeight).toFixed(2)} Z`;\n\n const progress = spring({\n frame,\n fps,\n durationInFrames: Math.max(20, Math.round(durationInFrames * 0.5)),\n config: { damping: 200 },\n });\n\n const dashOffset = pathLength * (1 - progress);\n\n // Dot position along the drawn path\n const targetLen = pathLength * progress;\n let traveled = 0;\n let dotX = points[0].x;\n let dotY = points[0].y;\n for (let i = 1; i < points.length; i++) {\n const dx = points[i].x - points[i - 1].x;\n const dy = points[i].y - points[i - 1].y;\n const segLen = Math.sqrt(dx * dx + dy * dy);\n if (traveled + segLen >= targetLen) {\n const s = (targetLen - traveled) / segLen;\n dotX = points[i - 1].x + dx * s;\n dotY = points[i - 1].y + dy * s;\n break;\n }\n traveled += segLen;\n dotX = points[i].x;\n dotY = points[i].y;\n }\n\n // Idle life: once drawn, the endpoint pulses gently forever.\n const settled = progress >= 0.999;\n const pulse = settled ? 1 + Math.sin(2 * Math.PI * 0.55 * t) * 0.25 : 1;\n const haloR = settled\n ? strokeWidth * (2.4 + Math.sin(2 * Math.PI * 0.55 * t) * 0.9)\n : 0;\n\n const shownValue = Math.round(\n min + (data[data.length - 1] - min) * Math.min(1, progress),\n );\n\n const gridRows = 4;\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,\n fontFamily: \"inherit\",\n }}\n >\n <svg\n width={width}\n height={height}\n viewBox={`0 0 ${width} ${height}`}\n style={{ overflow: \"visible\" }}\n >\n <defs>\n <linearGradient id=\"alc-area\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor={strokeColor} stopOpacity={0.28} />\n <stop offset=\"100%\" stopColor={strokeColor} stopOpacity={0} />\n </linearGradient>\n <clipPath id=\"alc-reveal\">\n <rect\n x={padding}\n y={0}\n width={innerWidth * progress}\n height={height}\n />\n </clipPath>\n </defs>\n\n {/* Horizontal grid only — quiet */}\n {Array.from({ length: gridRows + 1 }).map((_, i) => {\n const y = padding + (i / gridRows) * innerHeight;\n return (\n <line\n key={`h-${i}`}\n x1={padding}\n x2={padding + innerWidth}\n y1={y}\n y2={y}\n stroke={gridColor}\n strokeWidth={1}\n />\n );\n })}\n <line\n x1={padding}\n x2={padding + innerWidth}\n y1={padding + innerHeight}\n y2={padding + innerHeight}\n stroke=\"rgba(255,255,255,0.22)\"\n strokeWidth={2}\n />\n\n {/* Area fill revealed with the draw */}\n <path d={areaD} fill=\"url(#alc-area)\" clipPath=\"url(#alc-reveal)\" />\n\n {/* The line */}\n <path\n d={d}\n fill=\"none\"\n stroke={strokeColor}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeDasharray={pathLength}\n strokeDashoffset={dashOffset}\n />\n\n {showDot && progress > 0 && (\n <>\n {settled && (\n <circle\n cx={dotX}\n cy={dotY}\n r={haloR}\n fill=\"none\"\n stroke={accentColor}\n strokeWidth={1.5}\n opacity={0.5}\n />\n )}\n <circle\n cx={dotX}\n cy={dotY}\n r={strokeWidth * 1.6 * pulse}\n fill={accentColor}\n />\n </>\n )}\n\n {endpointValue && progress > 0.15 && (\n <text\n x={Math.min(dotX + 16, padding + innerWidth)}\n y={dotY - 16}\n fill={accentColor}\n fontSize={22}\n fontWeight={800}\n textAnchor=\"start\"\n style={{ fontFamily: \"inherit\" }}\n >\n {shownValue}\n </text>\n )}\n </svg>\n </div>\n );\n}\n","import { useEffect, useRef } from 'react';\nimport { useCurrentFrame, useVideoConfig } from 'remotion';\nimport * as palette from '../../lib/palette';\n\nexport interface DitherGradientBgProps {\n /** Ink color of the dither dots. */\n color?: string;\n /** Optional second ink — dots blend between the two along the field. */\n color2?: string;\n /** Ground behind the dots. */\n background?: string;\n /** Dither cell size in px at 1080p (default 8 — chunky, deliberate). */\n pixelSize?: number;\n /** Base gradient direction in degrees (default -30). */\n angle?: number;\n /** Drift speed multiplier. */\n speed?: number;\n /** Field seed — different seeds give different dot layouts. */\n seed?: number;\n className?: string;\n}\n\n// 8x8 Bayer matrix, normalized 0..1 — the classic ordered-dither threshold map.\nconst BAYER8 = [\n 0, 32, 8, 40, 2, 34, 10, 42,\n 48, 16, 56, 24, 50, 18, 58, 26,\n 12, 44, 4, 36, 14, 46, 6, 38,\n 60, 28, 52, 20, 62, 30, 54, 22,\n 3, 35, 11, 43, 1, 33, 9, 41,\n 51, 19, 59, 27, 49, 17, 57, 25,\n 15, 47, 7, 39, 13, 45, 5, 37,\n 63, 31, 55, 23, 61, 29, 53, 21,\n].map((v) => (v + 0.5) / 64);\n\n/** 32-bit integer hash → [0,1). Deterministic across frames/platforms. */\nfunction hash2(ix: number, iy: number, seed: number): number {\n let h = Math.imul(ix, 374761393) + Math.imul(iy, 668265263) + Math.imul(seed, 1013904223);\n h = Math.imul(h ^ (h >>> 13), 1274126177);\n h ^= h >>> 16;\n return (h >>> 0) / 4294967295;\n}\n\nfunction smoother(f: number): number {\n return f * f * f * (f * (f * 6 - 15) + 10);\n}\n\nfunction noise2(x: number, y: number, seed: number): number {\n const ix = Math.floor(x);\n const iy = Math.floor(y);\n const u = smoother(x - ix);\n const v = smoother(y - iy);\n const a = hash2(ix, iy, seed);\n const b = hash2(ix + 1, iy, seed);\n const c = hash2(ix, iy + 1, seed);\n const d = hash2(ix + 1, iy + 1, seed);\n return a + (b - a) * u + (c - a) * v + (a - b - c + d) * u * v;\n}\n\nfunction hexToRgb(hex: string): [number, number, number] {\n const m = hex.replace('#', '');\n return [\n parseInt(m.slice(0, 2), 16),\n parseInt(m.slice(2, 4), 16),\n parseInt(m.slice(4, 6), 16),\n ];\n}\n\n/**\n * Ordered-dither gradient — an animated luminance field quantized through a\n * Bayer 8×8 threshold matrix into hard pixel dots. The pixel-craft dev-tool\n * aesthetic: texture with intent, zero banding by construction, and the\n * anti-gradient-slop register between silk (organic) and mesh (soft).\n * Deterministic: pure function of (frame, params).\n */\nexport function DitherGradientBg({\n color = palette.BLUE,\n color2 = palette.TEAL,\n background = palette.BG,\n pixelSize = 8,\n angle = -30,\n speed = 1,\n seed = 7,\n className,\n}: DitherGradientBgProps) {\n const frame = useCurrentFrame();\n const { fps, width, height } = useVideoConfig();\n const canvasRef = useRef<HTMLCanvasElement>(null);\n const t = (frame / fps) * speed;\n\n useEffect(() => {\n const canvas = canvasRef.current;\n if (!canvas) return;\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n\n const px = Math.max(2, Math.round(pixelSize * (height / 1080)));\n const cols = Math.ceil(width / px);\n const rows = Math.ceil(height / px);\n canvas.width = cols;\n canvas.height = rows;\n\n const img = ctx.createImageData(cols, rows);\n const [r1, g1, b1] = hexToRgb(color);\n const [r2, g2, b2] = hexToRgb(color2);\n const [rb, gb, bb] = hexToRgb(background);\n\n const rad = (angle * Math.PI) / 180;\n const dx = Math.cos(rad);\n const dy = Math.sin(rad);\n // Slow, incommensurate drift of the field — ambient by design.\n const drift = t * 0.045;\n const warpT = 2 * Math.PI * 0.03 * t;\n\n for (let y = 0; y < rows; y++) {\n for (let x = 0; x < cols; x++) {\n const nx = x / cols;\n const ny = y / rows;\n // Base ramp along the angle, drifting; warped by slow value noise so\n // the dot field reads organic, not a screen-print test page.\n const ramp = nx * dx + ny * dy + drift;\n const warp =\n (noise2(nx * 2.3 + Math.sin(warpT) * 0.4, ny * 2.3 + Math.cos(warpT) * 0.4, seed) - 0.5) * 0.55;\n const v = ((ramp + warp) % 1 + 1) % 1;\n // Triangle wave so the ramp cycles smoothly without a hard seam.\n const lum = v < 0.5 ? v * 2 : (1 - v) * 2;\n\n const threshold = BAYER8[(y % 8) * 8 + (x % 8)];\n const on = lum > threshold;\n const i = (y * cols + x) * 4;\n if (on) {\n // Blend ink along the field for a two-tone dither.\n const mix = smoother(lum);\n img.data[i] = Math.round(r1 + (r2 - r1) * mix);\n img.data[i + 1] = Math.round(g1 + (g2 - g1) * mix);\n img.data[i + 2] = Math.round(b1 + (b2 - b1) * mix);\n } else {\n img.data[i] = rb;\n img.data[i + 1] = gb;\n img.data[i + 2] = bb;\n }\n img.data[i + 3] = 255;\n }\n }\n ctx.putImageData(img, 0, 0);\n }, [frame, fps, width, height, color, color2, background, pixelSize, angle, speed, seed, t]);\n\n return (\n <div\n className={className}\n style={{ position: 'absolute', inset: 0, background, overflow: 'hidden' }}\n >\n <canvas\n ref={canvasRef}\n style={{\n position: 'absolute',\n inset: 0,\n width: '100%',\n height: '100%',\n imageRendering: 'pixelated',\n }}\n />\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 { useCurrentFrame } from \"remotion\";\nimport * as palette from \"../../lib/palette\";\n\nexport interface DynamicGridProps {\n cellSize?: number;\n lineColor?: string;\n background?: string;\n speed?: number;\n direction?: \"diagonal\" | \"horizontal\" | \"vertical\";\n className?: string;\n}\n\nexport function DynamicGrid({\n cellSize = 40,\n lineColor = palette.BORDER,\n background = palette.BG,\n speed = 0.5,\n direction = \"diagonal\",\n className,\n}: DynamicGridProps) {\n const frame = useCurrentFrame();\n\n const offset = (frame * speed) % cellSize;\n\n let tx = 0;\n let ty = 0;\n if (direction === \"horizontal\") {\n tx = offset;\n } else if (direction === \"vertical\") {\n ty = offset;\n } else {\n tx = offset;\n ty = offset;\n }\n\n return (\n <div\n className={className}\n style={{\n position: \"absolute\",\n inset: 0,\n background,\n overflow: \"hidden\",\n }}\n >\n <div\n style={{\n position: \"absolute\",\n inset: `-${cellSize}px`,\n backgroundImage: `\n linear-gradient(to right, ${lineColor} 1px, transparent 1px),\n linear-gradient(to bottom, ${lineColor} 1px, transparent 1px)\n `,\n backgroundSize: `${cellSize}px ${cellSize}px`,\n transform: `translate(${tx}px, ${ty}px)`,\n willChange: \"transform\",\n }}\n />\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 type { ComponentType } from \"react\";\nimport { interpolate, spring, useCurrentFrame, useVideoConfig } from \"remotion\";\nimport * as palette from \"../../lib/palette\";\n\nexport interface EcosystemConstellationProps {\n satelliteCount?: number;\n centerLabel?: string;\n accentColor?: string;\n speed?: number;\n className?: string;\n}\n\nconst FONT_FAMILY =\n \"inherit\";\n\n// Inline brand mark components — stylized for demo identification, drawn from\n// primitive SVG shapes only so the component stays self-contained.\n\nfunction GitHubMark() {\n return (\n <svg viewBox=\"0 0 24 24\" width={30} height={30} aria-hidden=\"true\">\n <path\n fill=\"#fff\"\n d=\"M12 .5C5.65.5.5 5.65.5 12c0 5.08 3.29 9.39 7.86 10.91.58.11.79-.25.79-.55v-2.06c-3.2.7-3.87-1.36-3.87-1.36-.52-1.33-1.27-1.69-1.27-1.69-1.04-.71.08-.7.08-.7 1.15.08 1.76 1.18 1.76 1.18 1.02 1.75 2.69 1.24 3.35.95.1-.74.4-1.24.72-1.53-2.55-.29-5.24-1.28-5.24-5.7 0-1.26.45-2.29 1.18-3.1-.12-.29-.51-1.46.11-3.05 0 0 .97-.31 3.18 1.18.92-.26 1.91-.39 2.89-.39s1.97.13 2.89.39c2.21-1.49 3.18-1.18 3.18-1.18.62 1.59.23 2.76.11 3.05.74.81 1.18 1.84 1.18 3.1 0 4.43-2.7 5.41-5.27 5.69.41.36.77 1.06.77 2.13v3.16c0 .31.21.67.8.55C20.21 21.39 23.5 17.08 23.5 12 23.5 5.65 18.35.5 12 .5z\"\n />\n </svg>\n );\n}\n\nfunction VercelMark() {\n return (\n <svg viewBox=\"0 0 24 24\" width={28} height={28} aria-hidden=\"true\">\n <path fill=\"#fff\" d=\"M12 2 L23 21 L1 21 Z\" />\n </svg>\n );\n}\n\nfunction StripeMark() {\n return (\n <svg viewBox=\"0 0 24 24\" width={28} height={28} aria-hidden=\"true\">\n <path\n fill=\"#fff\"\n d=\"M13.5 9.6c0-.6.5-.85 1.3-.85 1.15 0 2.6.35 3.75.97V6.16c-1.25-.5-2.5-.7-3.75-.7C11.7 5.46 9.6 7.06 9.6 9.7c0 4.13 5.7 3.47 5.7 5.25 0 .7-.6.93-1.45.93-1.25 0-2.85-.52-4.1-1.2v3.65c1.4.6 2.8.85 4.1.85 3.2 0 5.4-1.55 5.4-4.25-.02-4.45-5.75-3.65-5.75-5.33z\"\n />\n </svg>\n );\n}\n\nfunction SlackMark() {\n return (\n <svg viewBox=\"0 0 24 24\" width={26} height={26} aria-hidden=\"true\">\n <rect x=\"2\" y=\"10\" width=\"9\" height=\"2.5\" rx=\"1.25\" fill=\"#36C5F0\" />\n <rect x=\"13\" y=\"10\" width=\"9\" height=\"2.5\" rx=\"1.25\" fill=\"#2EB67D\" />\n <rect x=\"10\" y=\"2\" width=\"2.5\" height=\"9\" rx=\"1.25\" fill=\"#ECB22E\" />\n <rect x=\"10\" y=\"13\" width=\"2.5\" height=\"9\" rx=\"1.25\" fill=\"#E01E5A\" />\n </svg>\n );\n}\n\nfunction LinearMark() {\n return (\n <svg viewBox=\"0 0 24 24\" width={28} height={28} aria-hidden=\"true\">\n <defs>\n <linearGradient id=\"linear-grad\" x1=\"0\" x2=\"1\" y1=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor=\"#fff\" stopOpacity=\"0.95\" />\n <stop offset=\"100%\" stopColor=\"#fff\" stopOpacity=\"0.55\" />\n </linearGradient>\n </defs>\n <circle cx=\"12\" cy=\"12\" r=\"10\" fill=\"url(#linear-grad)\" />\n <path\n d=\"M5 13 L11 19 M5 9 L15 19 M5 5 L19 19 M9 5 L19 15 M13 5 L19 11\"\n stroke=\"#0a0a0a\"\n strokeWidth=\"0.9\"\n strokeLinecap=\"round\"\n opacity=\"0.85\"\n />\n </svg>\n );\n}\n\nfunction FigmaMark() {\n return (\n <svg viewBox=\"0 0 24 24\" width={26} height={26} aria-hidden=\"true\">\n <circle cx=\"9\" cy=\"4\" r=\"3.5\" fill=\"#F24E1E\" />\n <circle cx=\"15\" cy=\"4\" r=\"3.5\" fill=\"#FF7262\" />\n <circle cx=\"9\" cy=\"11\" r=\"3.5\" fill=\"#A259FF\" />\n <circle cx=\"15\" cy=\"11\" r=\"3.5\" fill=\"#1ABCFE\" />\n <circle cx=\"9\" cy=\"18\" r=\"3.5\" fill=\"#0ACF83\" />\n </svg>\n );\n}\n\nfunction NotionMark() {\n return (\n <svg viewBox=\"0 0 24 24\" width={26} height={26} aria-hidden=\"true\">\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"3\" fill=\"#fff\" />\n <path\n d=\"M8 7 V17 M8 7 L16 17 M16 7 V17\"\n stroke=\"#0a0a0a\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n />\n </svg>\n );\n}\n\nfunction DiscordMark() {\n return (\n <svg viewBox=\"0 0 24 24\" width={28} height={28} aria-hidden=\"true\">\n <path\n fill=\"#fff\"\n d=\"M19.5 4.7A18 18 0 0 0 15 3.3l-.2.4a16.5 16.5 0 0 0-5.6 0L9 3.3a18 18 0 0 0-4.5 1.4C2 8.7 1.4 12.5 1.7 16.3a18 18 0 0 0 5.5 2.8l.4-.6a13 13 0 0 1-2-1l.5-.4a13 13 0 0 0 11.7 0l.5.4a13 13 0 0 1-2 1l.4.6a18 18 0 0 0 5.5-2.8c.4-4.4-.6-8.2-2.7-11.6zM8.5 14c-.9 0-1.7-.9-1.7-2s.8-2 1.7-2 1.7.9 1.7 2-.8 2-1.7 2zm7 0c-.9 0-1.7-.9-1.7-2s.8-2 1.7-2 1.7.9 1.7 2-.8 2-1.7 2z\"\n />\n </svg>\n );\n}\n\ninterface SatelliteBrand {\n Logo: ComponentType;\n bg: string;\n}\n\nconst SATELLITE_BRANDS: SatelliteBrand[] = [\n { Logo: GitHubMark, bg: \"#1f1f23\" },\n { Logo: VercelMark, bg: \"#0a0a0a\" },\n { Logo: StripeMark, bg: \"#635bff\" },\n { Logo: SlackMark, bg: \"#1a1d21\" },\n { Logo: LinearMark, bg: \"#5e6ad2\" },\n { Logo: FigmaMark, bg: \"#1e1e1e\" },\n { Logo: NotionMark, bg: \"#1a1a1a\" },\n { Logo: DiscordMark, bg: \"#5865f2\" },\n];\n\nexport function EcosystemConstellation({\n satelliteCount = 6,\n centerLabel = \"V\",\n accentColor = palette.VIOLET,\n speed = 1,\n className,\n}: EcosystemConstellationProps) {\n const frame = useCurrentFrame() * speed;\n const { fps } = useVideoConfig();\n\n const count = Math.max(\n 3,\n Math.min(SATELLITE_BRANDS.length, Math.floor(satelliteCount)),\n );\n\n // Center pulse (0..1)\n const pulse = (Math.sin(frame / 12) + 1) / 2;\n const centerScale = 1 + pulse * 0.06;\n\n // Geometry\n const cx = 640;\n const cy = 360;\n const baseRadiusX = 230;\n const baseRadiusY = 180;\n const offscreenRadius = 1200; // 150% of width\n\n // Per-satellite assembly spring (staggered)\n const satellites = Array.from({ length: count }).map((_, i) => {\n const stagger = i * 4;\n const sp = spring({\n frame: frame - stagger,\n fps,\n config: { mass: 1.1, damping: 16, stiffness: 70 },\n durationInFrames: 50,\n });\n const radiusFactor = interpolate(sp, [0, 1], [offscreenRadius, 1]);\n\n // Slight elliptical variation per satellite\n const orbitOffset = i * 22;\n const rX = baseRadiusX + orbitOffset;\n const rY = baseRadiusY + orbitOffset * 0.7;\n // Different angular speed per orbit (slower for outer)\n const angularSpeed = 0.012 - i * 0.0008;\n const baseAngle = (i / count) * Math.PI * 2;\n const angle = baseAngle + frame * angularSpeed;\n\n // Use radiusFactor as a multiplier on the orbit radius\n const x = cx + Math.cos(angle) * rX * radiusFactor;\n const y = cy + Math.sin(angle) * rY * radiusFactor;\n\n // Data pulse: which satellite is currently \"firing\"\n const activeIdx = Math.floor(frame / 30) % count;\n const isActive = activeIdx === i;\n // Within the active 30-frame window, fade the line in/out\n const localFrame = frame - Math.floor(frame / 30) * 30;\n const lineOpacity = isActive\n ? interpolate(localFrame, [0, 8, 22, 30], [0.15, 0.9, 0.9, 0.15], {\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\",\n })\n : 0.15;\n const satScale = isActive\n ? interpolate(localFrame, [0, 8, 22, 30], [1, 1.1, 1.1, 1], {\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\",\n })\n : 1;\n\n const brand = SATELLITE_BRANDS[i % SATELLITE_BRANDS.length];\n return {\n x,\n y,\n Logo: brand.Logo,\n color: brand.bg,\n lineOpacity,\n satScale,\n visible: sp > 0.02,\n };\n });\n\n return (\n <div\n className={className}\n style={{\n position: \"absolute\",\n inset: 0,\n overflow: \"hidden\",\n background:\n `radial-gradient(ellipse at center, ${palette.BG} 0%, ${palette.BG_DEEP} 75%)`,\n fontFamily: FONT_FAMILY,\n }}\n >\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 1280 720\"\n style={{ position: \"absolute\", inset: 0 }}\n >\n {/* Connection lines */}\n {satellites.map((s, i) => (\n <line\n key={`line-${i}`}\n x1={cx}\n y1={cy}\n x2={s.x}\n y2={s.y}\n stroke={accentColor}\n strokeWidth={2}\n strokeLinecap=\"round\"\n opacity={s.visible ? s.lineOpacity : 0}\n />\n ))}\n\n {/* Center glow */}\n <circle\n cx={cx}\n cy={cy}\n r={70 + pulse * 8}\n fill={accentColor}\n opacity={0.12}\n />\n <circle\n cx={cx}\n cy={cy}\n r={50 + pulse * 4}\n fill={accentColor}\n opacity={0.2}\n />\n </svg>\n\n {/* Center logo */}\n <div\n style={{\n position: \"absolute\",\n left: cx,\n top: cy,\n width: 96,\n height: 96,\n marginLeft: -48,\n marginTop: -48,\n borderRadius: 24,\n background: `linear-gradient(180deg, ${accentColor} 0%, ${accentColor}cc 100%)`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n color: \"white\",\n fontWeight: 800,\n fontSize: 52,\n letterSpacing: \"-0.05em\",\n transform: `scale(${centerScale})`,\n border: \"1px solid rgba(255,255,255,0.15)\",\n }}\n >\n {centerLabel}\n </div>\n\n {/* Satellites */}\n {satellites.map((s, i) => {\n const Logo = s.Logo;\n return (\n <div\n key={`sat-${i}`}\n style={{\n position: \"absolute\",\n left: s.x,\n top: s.y,\n width: 56,\n height: 56,\n marginLeft: -28,\n marginTop: -28,\n borderRadius: 14,\n background: `linear-gradient(180deg, ${s.color} 0%, ${s.color}dd 100%)`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transform: `scale(${s.satScale})`,\n border: \"1px solid rgba(255,255,255,0.12)\",\n opacity: s.visible ? 1 : 0,\n willChange: \"transform\",\n }}\n >\n <Logo />\n </div>\n );\n })}\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 { useCurrentFrame } from \"remotion\";\nimport * as palette from \"../../lib/palette\";\n\nexport interface InfiniteMarqueeProps {\n text?: string;\n fontSize?: number;\n color?: string;\n fontWeight?: number;\n pixelsPerFrame?: number;\n stroke?: boolean;\n strokeColor?: string;\n background?: string;\n speed?: number;\n className?: string;\n}\n\nexport function InfiniteMarquee({\n text = \"ship · build · animate · \",\n fontSize = 120,\n color = palette.SURFACE,\n fontWeight = 900,\n pixelsPerFrame = 4,\n stroke = false,\n strokeColor = palette.SURFACE,\n background = palette.TEXT_HI,\n speed = 1,\n className,\n}: InfiniteMarqueeProps) {\n const frame = useCurrentFrame() * speed;\n\n const approxWidth = text.length * fontSize * 0.55;\n const offset = -((frame * pixelsPerFrame) % approxWidth);\n\n const spanStyle: React.CSSProperties = {\n fontSize,\n fontWeight,\n fontFamily:\n \"inherit\",\n color: stroke ? \"transparent\" : color,\n WebkitTextStroke: stroke ? `2px ${strokeColor}` : undefined,\n paddingRight: \"0.4em\",\n letterSpacing: \"-0.03em\",\n };\n\n return (\n <div\n style={{\n position: \"absolute\",\n inset: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n background,\n }}\n >\n <div\n className={className}\n style={{\n display: \"flex\",\n whiteSpace: \"nowrap\",\n transform: `translateX(${offset}px)`,\n }}\n >\n <span style={spanStyle}>{text}</span>\n <span style={spanStyle}>{text}</span>\n <span style={spanStyle}>{text}</span>\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 { useCurrentFrame, useVideoConfig } from \"remotion\";\nimport * as palette from \"../../lib/palette\";\n\nexport interface MeshGradientBgProps {\n colors?: string[];\n speed?: number;\n background?: string;\n blur?: number;\n className?: string;\n}\n\nexport function MeshGradientBg({\n colors = [palette.BLUE, palette.VIOLET, palette.TEAL],\n speed = 1,\n background = palette.BG,\n blur = 100,\n className,\n}: MeshGradientBgProps) {\n const frame = useCurrentFrame();\n const { fps } = useVideoConfig();\n\n const isDark = isColorDark(background);\n const blendMode: \"screen\" | \"multiply\" = isDark ? \"screen\" : \"multiply\";\n\n const t = (frame / fps) * speed;\n\n // Per-blob incommensurate frequencies (12–22s periods at speed 1) — the old\n // shared 2s cycle read as a hyperactive, mechanical loop (measured 3.4× the\n // ambient-background energy band). Ambient means barely-perceptible drift.\n const blobs = colors.map((color, i) => {\n const phase = i * 1.7;\n const f1 = 0.045 + i * 0.013; // Hz\n const f2 = 0.06 + i * 0.011;\n const f3 = 0.05 + i * 0.017;\n\n const left = 50 + Math.sin(2 * Math.PI * f1 * t + phase) * 22;\n const top = 50 + Math.cos(2 * Math.PI * f2 * t + phase * 0.6) * 20;\n const scale = 1 + Math.sin(2 * Math.PI * f3 * t + phase * 1.3) * 0.12;\n\n return { color, left, top, scale, key: `blob-${i}` };\n });\n\n return (\n <div\n className={className}\n style={{\n position: \"absolute\",\n inset: 0,\n background,\n overflow: \"hidden\",\n }}\n >\n {blobs.map((b) => (\n <div\n key={b.key}\n style={{\n position: \"absolute\",\n left: `${b.left}%`,\n top: `${b.top}%`,\n width: \"55%\",\n height: \"55%\",\n borderRadius: \"50%\",\n background: `radial-gradient(circle, ${b.color}f2 0%, ${b.color}99 38%, ${b.color}33 62%, ${b.color}00 80%)`,\n filter: `blur(${blur}px)`,\n mixBlendMode: blendMode,\n transform: `translate(-50%, -50%) scale(${b.scale})`,\n willChange: \"transform\",\n }}\n />\n ))}\n </div>\n );\n}\n\nfunction isColorDark(hex: string): boolean {\n const m = hex.replace(\"#\", \"\");\n if (m.length !== 6 && m.length !== 3) return true;\n const full =\n m.length === 3\n ? m\n .split(\"\")\n .map((c) => c + c)\n .join(\"\")\n : m;\n const r = parseInt(full.slice(0, 2), 16);\n const g = parseInt(full.slice(2, 4), 16);\n const b = parseInt(full.slice(4, 6), 16);\n const luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;\n return luminance < 0.5;\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 { useCurrentFrame } from \"remotion\";\nimport * as palette from \"../../lib/palette\";\n\nexport interface PerspectiveMarqueeProps {\n items?: string[];\n fontSize?: number;\n color?: string;\n fontWeight?: number;\n pixelsPerFrame?: number;\n rotateY?: number;\n rotateX?: number;\n perspective?: number;\n fadeColor?: string;\n background?: string;\n speed?: number;\n className?: string;\n}\n\nconst FONT_FAMILY =\n \"inherit\";\n\nconst DEFAULT_ITEMS = [\n \"Vercel\",\n \"Linear\",\n \"Stripe\",\n \"Figma\",\n \"Notion\",\n \"Raycast\",\n \"Arc\",\n \"Cursor\",\n];\n\nexport function PerspectiveMarquee({\n items = DEFAULT_ITEMS,\n fontSize = 84,\n color = palette.TEXT_HI,\n fontWeight = 700,\n pixelsPerFrame = 2,\n rotateY = -28,\n rotateX = 8,\n perspective = 1200,\n fadeColor = palette.BG,\n background = palette.BG,\n speed = 1,\n className,\n}: PerspectiveMarqueeProps) {\n const frame = useCurrentFrame() * speed;\n\n // Approximate width of one full item set so the modulo wraps cleanly.\n const itemPadding = fontSize * 0.9;\n const approxItemWidth = items.reduce(\n (acc, item) => acc + item.length * fontSize * 0.6 + itemPadding,\n 0,\n );\n\n const offset = -((frame * pixelsPerFrame) % approxItemWidth);\n\n // Render the row 3x so the loop is seamless even when rotated in 3D.\n const rendered = [...items, ...items, ...items];\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 perspective: `${perspective}px`,\n }}\n >\n <div\n style={{\n width: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n transform: `rotateX(${rotateX}deg) rotateY(${rotateY}deg)`,\n transformStyle: \"preserve-3d\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n whiteSpace: \"nowrap\",\n transform: `translateX(${offset}px)`,\n }}\n >\n {rendered.map((item, i) => {\n // Approximate this item's center X (relative to the marquee row,\n // including the rolling offset). Used to dial in depth-of-field blur\n // and opacity by horizontal position on screen.\n const itemCenter =\n i * (approxItemWidth / items.length) +\n approxItemWidth / items.length / 2 +\n offset;\n // Normalize roughly to [-1, 1] across a 1280px viewport.\n const norm = (itemCenter - 640) / 640;\n const distance = Math.min(1, Math.abs(norm));\n const blurPx = distance * 6;\n const opacity = 1 - distance * 0.4;\n\n return (\n <span\n key={i}\n style={{\n display: \"inline-block\",\n fontFamily: FONT_FAMILY,\n fontSize,\n fontWeight,\n color,\n letterSpacing: \"-0.03em\",\n paddingRight: itemPadding,\n filter: `blur(${blurPx}px)`,\n opacity,\n }}\n >\n {item}\n </span>\n );\n })}\n </div>\n </div>\n\n {/* Vignette to fade marquee edges into background */}\n <div\n style={{\n position: \"absolute\",\n inset: 0,\n pointerEvents: \"none\",\n background: `linear-gradient(90deg, ${fadeColor} 0%, transparent 18%, transparent 82%, ${fadeColor} 100%)`,\n }}\n />\n <div\n style={{\n position: \"absolute\",\n inset: 0,\n pointerEvents: \"none\",\n background: `linear-gradient(180deg, ${fadeColor} 0%, transparent 25%, transparent 75%, ${fadeColor} 100%)`,\n }}\n />\n </div>\n );\n}\n","import { useEffect, useRef } from 'react';\nimport { useCurrentFrame, useVideoConfig } from 'remotion';\nimport * as palette from '../../lib/palette';\n\nexport interface SilkFlowBgProps {\n /** Thread hues. First = dominant (~70% of threads), rest = sparse accents. */\n colors?: string[];\n /** Ground color (hex). Dark grounds get additive luminous threads; light grounds get ink-on-paper strokes. */\n background?: string;\n /** Thread-count multiplier, 0.2–2 (default 1 ≈ 170 threads). */\n density?: number;\n /** Motion speed multiplier — travelling light + silk sway. */\n speed?: number;\n /** Bloom intensity 0–1. */\n glow?: number;\n /** Film-grain opacity 0–0.3. */\n grain?: number;\n /** Vignette strength 0–1. */\n vignette?: number;\n /** Base flow direction in degrees (default -16 — a gentle up-right current). */\n angle?: number;\n /** Field seed — different seeds give different silk layouts. */\n seed?: number;\n className?: string;\n}\n\n// ── Deterministic noise (no Math.random — Remotion frames must be pure) ──\n\n/** 32-bit integer hash → [0,1). Stable across frames/platforms. */\nfunction hash2(ix: number, iy: number, seed: number): number {\n let h = Math.imul(ix, 374761393) + Math.imul(iy, 668265263) + Math.imul(seed, 1013904223);\n h = Math.imul(h ^ (h >>> 13), 1274126177);\n h ^= h >>> 16;\n return (h >>> 0) / 4294967295;\n}\n\nfunction smoother(f: number): number {\n return f * f * f * (f * (f * 6 - 15) + 10);\n}\n\n/** Value noise with smootherstep interpolation. */\nfunction noise2(x: number, y: number, seed: number): number {\n const ix = Math.floor(x);\n const iy = Math.floor(y);\n const u = smoother(x - ix);\n const v = smoother(y - iy);\n const a = hash2(ix, iy, seed);\n const b = hash2(ix + 1, iy, seed);\n const c = hash2(ix, iy + 1, seed);\n const d = hash2(ix + 1, iy + 1, seed);\n return a + (b - a) * u + (c - a) * v + (a - b - c + d) * u * v;\n}\n\n/** Two-octave fractal noise — enough curl for sweeping silk without jitter. */\nfunction fbm2(x: number, y: number, seed: number): number {\n return noise2(x, y, seed) * 0.667 + noise2(x * 2.13 + 7.3, y * 2.13 + 3.1, seed + 101) * 0.333;\n}\n\n// Seeded PRNG for the grain layer (house idiom — see effects/grain).\nfunction seededRandom(seed: number): () => number {\n let s = seed > 0 ? seed : 1;\n return () => {\n s = (s * 16807) % 2147483647;\n return (s - 1) / 2147483646;\n };\n}\n\nfunction isColorDark(hex: string): boolean {\n const m = hex.replace('#', '');\n const r = parseInt(m.slice(0, 2), 16);\n const g = parseInt(m.slice(2, 4), 16);\n const b = parseInt(m.slice(4, 6), 16);\n return (0.299 * r + 0.587 * g + 0.114 * b) / 255 < 0.5;\n}\n\n/** Dominant-first color pick: ~70% threads take colors[0], the rest spread over the accents. */\nfunction pickColor(colors: string[], r: number): string {\n if (colors.length === 1) return colors[0];\n if (r < 0.7) return colors[0];\n const rest = colors.length - 1;\n return colors[1 + Math.min(rest - 1, Math.floor(((r - 0.7) / 0.3) * rest))];\n}\n\n/**\n * Luminous flow-field silk. Fine threads are integrated as streamlines through\n * a seeded value-noise angle field; a slow time-varying sway bends the field so\n * the silk itself breathes, while a travelling shimmer moves light along each\n * thread. Bloom comes from re-blitting the scene through a blur — one scene\n * draw, two composites. Everything is a pure function of (frame, params):\n * deterministic across Lambda workers and preview.\n */\nexport function SilkFlowBg({\n colors = [palette.BLUE, palette.VIOLET, palette.TEAL],\n background = palette.BG,\n density = 1,\n speed = 1,\n glow = 0.55,\n grain = 0.07,\n vignette = 0.45,\n angle = -16,\n seed = 7,\n className,\n}: SilkFlowBgProps) {\n const frame = useCurrentFrame();\n const { fps, width, height } = useVideoConfig();\n const canvasRef = useRef<HTMLCanvasElement>(null);\n const grainRef = useRef<HTMLCanvasElement>(null);\n const sceneRef = useRef<HTMLCanvasElement | null>(null);\n\n const isDark = isColorDark(background);\n const t = (frame / fps) * speed;\n\n // ── Silk threads + bloom ──\n useEffect(() => {\n const canvas = canvasRef.current;\n if (!canvas) return;\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n canvas.width = width;\n canvas.height = height;\n\n if (!sceneRef.current) sceneRef.current = document.createElement('canvas');\n const scene = sceneRef.current;\n scene.width = width;\n scene.height = height;\n const sctx = scene.getContext('2d');\n if (!sctx) return;\n\n sctx.clearRect(0, 0, width, height);\n sctx.lineCap = 'round';\n sctx.lineJoin = 'round';\n // Dark ground: threads add light. Light ground: threads lay ink.\n sctx.globalCompositeOperation = isDark ? 'lighter' : 'source-over';\n\n const aspect = width / height;\n const baseAngle = (angle * Math.PI) / 180;\n const nLines = Math.round(170 * density);\n const STEPS = 88; // integration steps per thread\n const CHUNK = 8; // segments per stroke (alpha varies per chunk)\n const stepLen = 0.011; // normalized to frame height\n const NOISE_SCALE = 1.15;\n const CURL = 2.2; // max field deflection (radians)\n const swayPhase = t * 0.055 * 2 * Math.PI; // slow global sway of the field\n\n const px = new Float64Array(STEPS);\n const py = new Float64Array(STEPS);\n\n for (let i = 0; i < nLines; i++) {\n const r1 = hash2(i, 11, seed);\n const r2 = hash2(i, 23, seed);\n const r3 = hash2(i, 37, seed);\n const r4 = hash2(i, 53, seed);\n const r5 = hash2(i, 71, seed);\n const r6 = hash2(i, 89, seed);\n\n // Low-discrepancy seed points, overscanned past the frame edges so\n // threads flow through the borders instead of visibly starting there.\n let x = -0.08 + (aspect + 0.16) * ((i * 0.6180339887) % 1);\n let y = -0.08 + 1.16 * ((i * 0.7548776662) % 1);\n\n for (let s = 0; s < STEPS; s++) {\n px[s] = x;\n py[s] = y;\n const n = fbm2(x * NOISE_SCALE, y * NOISE_SCALE, seed);\n const sway =\n Math.sin(swayPhase + fbm2(x * 0.9 + 31.7, y * 0.9 + 17.3, seed + 999) * 6.28318) * 0.16;\n const th = baseAngle + (n - 0.5) * CURL + sway;\n x += Math.cos(th) * stepLen;\n y += Math.sin(th) * stepLen;\n }\n\n const color = pickColor(colors, r1);\n const w = (0.9 + r2 * 1.5) * (height / 1080);\n const baseAlpha = 0.22 + r3 * 0.4;\n const breathe = 0.75 + 0.25 * Math.sin(2 * Math.PI * (0.045 + r4 * 0.05) * t + r5 * 6.283);\n // Travelling light: one traversal every 10s at speed 1, staggered per thread.\n const p = (t / 10 + r6) % 1;\n\n sctx.strokeStyle = color;\n for (let c0 = 0; c0 < STEPS - 1; c0 += CHUNK) {\n const c1 = Math.min(c0 + CHUNK, STEPS - 1);\n const sMid = (c0 + c1) / 2 / (STEPS - 1);\n const env = Math.sin(Math.PI * sMid) ** 0.9; // fade both thread ends\n let d = Math.abs(sMid - p);\n d = Math.min(d, 1 - d); // wrap-around distance to the light pulse\n const shim = Math.exp(-(d * d) / (2 * 0.05 * 0.05));\n sctx.globalAlpha = Math.min(1, baseAlpha * env * breathe * (1 + 1.8 * shim));\n sctx.lineWidth = w * (1 + shim * 1.2);\n sctx.beginPath();\n sctx.moveTo(px[c0] * height, py[c0] * height);\n for (let s = c0 + 1; s <= c1; s++) sctx.lineTo(px[s] * height, py[s] * height);\n sctx.stroke();\n }\n }\n\n // Composite: blurred pass (bloom) under the sharp pass — one scene, two blits.\n ctx.clearRect(0, 0, width, height);\n if (glow > 0) {\n ctx.save();\n ctx.filter = `blur(${Math.round(18 * (height / 1080))}px)`;\n ctx.globalAlpha = Math.min(1, glow);\n ctx.globalCompositeOperation = isDark ? 'lighter' : 'multiply';\n ctx.drawImage(scene, 0, 0);\n ctx.restore();\n }\n ctx.filter = 'none';\n ctx.globalAlpha = 1;\n ctx.globalCompositeOperation = 'source-over';\n ctx.drawImage(scene, 0, 0);\n }, [frame, fps, width, height, colors, density, speed, glow, angle, seed, isDark, t]);\n\n // ── Film grain (downsampled, re-seeded per frame — house idiom) ──\n useEffect(() => {\n if (grain <= 0) return;\n const canvas = grainRef.current;\n if (!canvas) return;\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n const gw = Math.ceil(width * 0.25);\n const gh = Math.ceil(height * 0.25);\n canvas.width = gw;\n canvas.height = gh;\n const img = ctx.createImageData(gw, gh);\n const rand = seededRandom(Math.floor(frame) * 7919 + seed + 1);\n for (let i = 0; i < img.data.length; i += 4) {\n const v = Math.floor(rand() * 256);\n img.data[i] = v;\n img.data[i + 1] = v;\n img.data[i + 2] = v;\n img.data[i + 3] = 255;\n }\n ctx.putImageData(img, 0, 0);\n }, [frame, grain, width, height, seed]);\n\n return (\n <div\n className={className}\n style={{ position: 'absolute', inset: 0, background, overflow: 'hidden' }}\n >\n <canvas\n ref={canvasRef}\n style={{ position: 'absolute', inset: 0, width: '100%', height: '100%' }}\n />\n {vignette > 0 && (\n <div\n style={{\n position: 'absolute',\n inset: 0,\n pointerEvents: 'none',\n background: `radial-gradient(ellipse 130% 100% at 50% 46%, transparent 52%, ${background} 128%)`,\n opacity: vignette,\n }}\n />\n )}\n {grain > 0 && (\n <canvas\n ref={grainRef}\n style={{\n position: 'absolute',\n inset: 0,\n width: '100%',\n height: '100%',\n mixBlendMode: 'overlay',\n opacity: grain,\n pointerEvents: 'none',\n }}\n />\n )}\n </div>\n );\n}\n","import { useEffect, useRef } from 'react';\nimport { useCurrentFrame, useVideoConfig } from 'remotion';\nimport * as palette from '../../lib/palette';\n\nexport interface VectorFieldProps {\n /** Number of embedding points (default 140). */\n pointCount?: number;\n /** Base point color. */\n color?: string;\n /** Query point + neighbor-edge accent. */\n accentColor?: string;\n /** Ground. */\n background?: string;\n /** Frame the query lands (default 40). */\n queryAt?: number;\n /** Neighbors that light up (default 6). */\n neighbors?: number;\n /** Layout seed. */\n seed?: number;\n className?: string;\n}\n\nfunction hash2(ix: number, iy: number, seed: number): number {\n let h = Math.imul(ix, 374761393) + Math.imul(iy, 668265263) + Math.imul(seed, 1013904223);\n h = Math.imul(h ^ (h >>> 13), 1274126177);\n h ^= h >>> 16;\n return (h >>> 0) / 4294967295;\n}\n\nfunction hexToRgb(hex: string): [number, number, number] {\n const m = hex.replace('#', '');\n return [parseInt(m.slice(0, 2), 16), parseInt(m.slice(2, 4), 16), parseInt(m.slice(4, 6), 16)];\n}\n\n/**\n * Embedding space, cinematized: a field of points drifts on incommensurate\n * frequencies; a query point drops in with a ring pulse, its k nearest\n * neighbors brighten and draw edges to it, and the local cluster leans\n * gently toward the query. Idle: edges shimmer, everything keeps drifting.\n * Deterministic canvas — a pure function of (frame, params).\n */\nexport function VectorField({\n pointCount = 140,\n color = palette.BLUE,\n accentColor = palette.ACCENT,\n background = palette.BG,\n queryAt = 40,\n neighbors = 6,\n seed = 7,\n className,\n}: VectorFieldProps) {\n const frame = useCurrentFrame();\n const { fps, width, height } = useVideoConfig();\n const canvasRef = useRef<HTMLCanvasElement>(null);\n const t = frame / fps;\n\n useEffect(() => {\n const canvas = canvasRef.current;\n if (!canvas) return;\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n canvas.width = width;\n canvas.height = height;\n ctx.clearRect(0, 0, width, height);\n\n const [cr, cg, cb] = hexToRgb(color);\n const [ar, ag, ab] = hexToRgb(accentColor);\n\n // Query lands center-right, with a soft entrance.\n const qx0 = width * 0.58;\n const qy0 = height * 0.46;\n const qIn = Math.min(1, Math.max(0, (frame - queryAt) / 12));\n const qEase = 1 - (1 - qIn) * (1 - qIn);\n const queryLive = frame >= queryAt;\n\n // Points: seeded base position + slow drift; the query pulls its\n // neighborhood in by ~4% once it lands.\n type Pt = { x: number; y: number; r: number; d: number };\n const pts: Pt[] = [];\n for (let i = 0; i < pointCount; i++) {\n const r1 = hash2(i, 11, seed);\n const r2 = hash2(i, 23, seed);\n const r3 = hash2(i, 37, seed);\n const r4 = hash2(i, 53, seed);\n const bx = (0.06 + r1 * 0.88) * width;\n const by = (0.08 + r2 * 0.84) * height;\n const f1 = 0.03 + r3 * 0.03;\n const f2 = 0.025 + r4 * 0.03;\n let x = bx + Math.sin(2 * Math.PI * f1 * t + r1 * 6.28) * width * 0.012;\n let y = by + Math.cos(2 * Math.PI * f2 * t + r2 * 6.28) * height * 0.016;\n const d = Math.hypot(x - qx0, y - qy0);\n if (queryLive && d < Math.min(width, height) * 0.4) {\n const pull = qEase * 0.04 * (1 - d / (Math.min(width, height) * 0.4));\n x += (qx0 - x) * pull;\n y += (qy0 - y) * pull;\n }\n pts.push({ x, y, r: 2.8 + r3 * 3.2, d: Math.hypot(x - qx0, y - qy0) });\n }\n\n // k nearest to the query.\n const nearest = queryLive\n ? [...pts].sort((a, b) => a.d - b.d).slice(0, neighbors)\n : [];\n\n // Edges to neighbors — draw first, shimmer at idle.\n if (queryLive) {\n const shimmer = 0.55 + Math.sin(2 * Math.PI * 0.5 * t) * 0.25;\n for (const p of nearest) {\n const grad = ctx.createLinearGradient(qx0, qy0, p.x, p.y);\n grad.addColorStop(0, `rgba(${ar},${ag},${ab},${0.65 * qEase * shimmer})`);\n grad.addColorStop(1, `rgba(${ar},${ag},${ab},0.06)`);\n ctx.strokeStyle = grad;\n ctx.lineWidth = 1.6;\n ctx.beginPath();\n ctx.moveTo(qx0, qy0);\n ctx.lineTo(p.x, p.y);\n ctx.stroke();\n }\n }\n\n // Points.\n for (const p of pts) {\n const isNear = queryLive && nearest.includes(p);\n const alpha = isNear ? 0.95 : 0.6;\n ctx.fillStyle = isNear\n ? `rgba(${ar},${ag},${ab},${alpha})`\n : `rgba(${cr},${cg},${cb},${alpha})`;\n ctx.beginPath();\n ctx.arc(p.x, p.y, isNear ? p.r * 1.5 : p.r, 0, Math.PI * 2);\n ctx.fill();\n }\n\n // Query point + landing ring.\n if (queryLive) {\n const ringAge = (frame - queryAt) / 20;\n if (ringAge < 1.6) {\n ctx.strokeStyle = `rgba(${ar},${ag},${ab},${Math.max(0, 0.7 - ringAge * 0.45)})`;\n ctx.lineWidth = 2;\n ctx.beginPath();\n ctx.arc(qx0, qy0, 14 + ringAge * 46, 0, Math.PI * 2);\n ctx.stroke();\n }\n const idlePulse = 1 + Math.sin(2 * Math.PI * 0.55 * t) * 0.12;\n ctx.fillStyle = `rgba(${ar},${ag},${ab},${qEase})`;\n ctx.shadowColor = accentColor;\n ctx.shadowBlur = 22;\n ctx.beginPath();\n ctx.arc(qx0, qy0, 8 * qEase * idlePulse, 0, Math.PI * 2);\n ctx.fill();\n ctx.shadowBlur = 0;\n }\n }, [frame, fps, width, height, pointCount, color, accentColor, background, queryAt, neighbors, seed, t]);\n\n return (\n <div\n className={className}\n style={{ position: 'absolute', inset: 0, background, overflow: 'hidden' }}\n >\n <canvas\n ref={canvasRef}\n style={{ position: 'absolute', inset: 0, width: '100%', height: '100%' }}\n />\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 { interpolate, useCurrentFrame } from \"remotion\";\nimport { fitTextOnNLines } from \"@remotion/layout-utils\";\nimport { resolveFitFontSize } from \"../../lib/text/fitText\";\nimport * as palette from \"../../lib/palette\";\n\nexport interface VolumetricRaysProps {\n text?: string;\n fontSize?: number;\n fontWeight?: number;\n rayColor?: string;\n background?: string;\n textColor?: string;\n intensity?: number;\n speed?: number;\n className?: string;\n}\n\nconst FONT_FAMILY =\n \"inherit\";\n\n/**\n * Layered \"god rays\" effect built entirely from CSS / SVG masks. The trick:\n *\n * 1. Render the same text twice. Back layer is scaled wider than tall and\n * heavily blurred — that's the \"halo\" the rays bloom out of.\n * 2. Sweep an SVG conic-gradient mask above the text to look like rotating\n * light shafts pushing through the lettering.\n * 3. The front layer is solid (silhouette) so the contrast reads as light\n * pushing AROUND the letters rather than ON them.\n */\nexport function VolumetricRays({\n text = \"REMOCN\",\n fontSize = 240,\n fontWeight = 800,\n rayColor = palette.ACCENT,\n background = palette.BG,\n textColor = palette.BG,\n intensity = 1,\n speed = 1,\n className,\n}: VolumetricRaysProps) {\n const frame = useCurrentFrame() * speed;\n\n // Auto-fit: shrink the display size so a long word fits the frame on one line instead\n // of overflowing (which is what lets the `text` cap be raised). The same fitted size\n // is applied to ALL THREE text layers (bloom / ray-clip / silhouette) so they stay\n // pixel-aligned — the god-rays effect relies on identical metrics, so the layers can't\n // be wrapped in <FitText> independently. On any measurement failure, fall back to the\n // design size (old fixed-size behavior).\n const RAYS_MAX_WIDTH = 1400;\n let singleLineFit = fontSize;\n if (text.trim().length > 0) {\n try {\n const { fontSize: fit } = fitTextOnNLines({\n text,\n maxLines: 1,\n maxBoxWidth: RAYS_MAX_WIDTH,\n fontFamily: FONT_FAMILY,\n fontWeight,\n letterSpacing: \"-0.04em\",\n maxFontSize: fontSize,\n validateFontIsLoaded: false,\n });\n singleLineFit = fit;\n } catch {\n singleLineFit = fontSize;\n }\n }\n const { fontSize: fittedFontSize } = resolveFitFontSize({\n singleLineFitFontSize: singleLineFit,\n minFontSize: Math.round(fontSize * 0.55),\n maxFontSize: fontSize,\n });\n\n // Slow source rotation: the rays drift around their origin so the scene\n // never looks frozen even though motion is sub-conscious.\n const rotation = interpolate(frame, [0, 240], [-4, 8]);\n // Bloom intensity ramps in over the first second.\n const bloomOpacity = interpolate(frame, [0, 30], [0, 0.95 * intensity], {\n extrapolateLeft: \"clamp\",\n extrapolateRight: \"clamp\",\n });\n // Halo color slowly pulses with a sine wave.\n const haloPulse = 0.6 + Math.sin(frame / 14) * 0.15;\n\n const sharedTextStyle: React.CSSProperties = {\n position: \"absolute\",\n inset: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontFamily: FONT_FAMILY,\n fontSize: fittedFontSize,\n fontWeight,\n letterSpacing: \"-0.04em\",\n textAlign: \"center\",\n whiteSpace: \"nowrap\",\n };\n\n return (\n <div\n className={className}\n style={{\n position: \"absolute\",\n inset: 0,\n background,\n overflow: \"hidden\",\n }}\n >\n {/* 1. The bloom: same text, scaled and blurred, anchored to bottom so\n the light \"rises\" from below the baseline. */}\n <div\n style={{\n ...sharedTextStyle,\n color: rayColor,\n filter: `blur(${60 * intensity}px)`,\n transform: \"scale(1.2, 1.6)\",\n transformOrigin: \"center bottom\",\n opacity: bloomOpacity * haloPulse,\n }}\n >\n {text}\n </div>\n\n {/* 2. Conic-gradient ray mask, masked by the text shape via background-clip.\n We render a wide conic gradient inside a text-shaped clip so the\n \"light shafts\" only show up where letters are. */}\n <div\n style={{\n ...sharedTextStyle,\n backgroundImage: `conic-gradient(from ${rotation}deg at 50% 100%,\n transparent 0deg,\n ${rayColor} 20deg,\n transparent 40deg,\n ${rayColor} 80deg,\n transparent 100deg,\n ${rayColor} 140deg,\n transparent 160deg,\n ${rayColor} 200deg,\n transparent 220deg,\n ${rayColor} 260deg,\n transparent 280deg,\n ${rayColor} 320deg,\n transparent 360deg)`,\n color: \"transparent\",\n WebkitBackgroundClip: \"text\",\n backgroundClip: \"text\",\n opacity: 0.5 * intensity,\n filter: \"blur(2px)\",\n }}\n >\n {text}\n </div>\n\n {/* 3. Front silhouette: solid dark text on top so the eye reads\n \"letters in front of light\" instead of \"lit-up letters\". */}\n <div\n style={{\n ...sharedTextStyle,\n color: textColor,\n textShadow: `0 0 ${30 * intensity}px ${rayColor}`,\n }}\n >\n {text}\n </div>\n\n {/* 4. Floor light bleed — wide horizontal radial gradient at the\n baseline so the rays feel grounded. */}\n <div\n style={{\n position: \"absolute\",\n left: 0,\n right: 0,\n bottom: 0,\n height: 200,\n pointerEvents: \"none\",\n background: `radial-gradient(ellipse at 50% 100%, ${rayColor}55 0%, transparent 60%)`,\n opacity: bloomOpacity,\n }}\n />\n </div>\n );\n}\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport * as palette from '../../lib/palette';\nimport { AnimatedBarChart } from './index';\n\nconst paramsSchema = z.object({\n data: z.array(z.number().min(0)).min(2).max(24).default([35, 60, 45, 80, 55, 70, 90, 65]).describe(\n 'Bar values. Any non-negative numbers; the primitive auto-scales to the max. 6–10 bars reads cleanest.',\n ),\n labels: z.array(z.string().max(24)).optional().describe(\n 'Optional x-axis labels, one per data point. Omit for an unlabeled, pure-shape chart.',\n ),\n width: z.number().min(400).max(1920).default(1000).describe('Chart width in pixels (the SVG inner box).'),\n height: z.number().min(200).max(1080).default(500).describe('Chart height in pixels.'),\n barColor: z.string().default(palette.ACCENT).describe(\n 'Bar fill color. Use a single brand color — chart is monochromatic by design.',\n ),\n accentColor: z.string().default(palette.TEAL).describe('Peak (max value) bar accent — the number that lands. Set equal to barColor to disable.'),\n valueLabels: z.boolean().default(true).describe('Counting value labels above the bars.'),\n background: z.string().default(palette.BG).describe('Frame background behind the chart.'),\n gap: z.number().min(0).max(60).default(16).describe('Gap between bars in pixels.'),\n staggerFrames: z.number().int().min(0).max(30).default(6).describe(\n 'Frames between each bar\\'s spring-up entrance. 4–8 reads as confident; 0 lands them all at once.',\n ),\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: 'animated-bar-chart',\n component: AnimatedBarChart,\n name: 'Animated Bar Chart',\n category: 'backgrounds',\n kind: 'component',\n version: '0.2.1',\n\n intent: 'render-chart',\n description:\n 'Spring-driven bar chart that scales each bar up from the baseline with a configurable stagger. SVG-based, clean flat bars. Designed as a hero data visualization — full-frame, single accent color, no chart junk.',\n useWhen:\n 'Quarterly numbers, growth charts, \"we shipped X this month\" data beats, single-metric storytelling. Avoid for >12 bars (axis becomes unreadable at 1920×1080) and avoid when the data range crosses zero — this primitive only renders non-negative bars.',\n pairsWith: ['kinetic-type', 'cinematic-title', 'lower-third', 'mesh-gradient-bg'],\n avoidWith: ['animated-line-chart'],\n tier: 'standard',\n useCase: ['explainer'],\n tags: ['background', 'chart', 'bar', 'data', 'analytics', 'metric', 'svg'],\n mood: ['corporate', 'editorial', 'tech-demo', 'minimal'],\n\n paramsSchema,\n propDefaults: {\n data: [35, 60, 45, 80, 55, 70, 90, 65],\n width: 1000,\n height: 500,\n barColor: palette.ACCENT,\n accentColor: palette.TEAL,\n background: palette.BG,\n valueLabels: true,\n gap: 16,\n staggerFrames: 5,\n speed: 1,\n },\n\n examples: [\n {\n name: 'quarterly-revenue',\n mood: ['corporate'],\n params: {\n data: [120, 180, 240, 360],\n labels: ['Q1', 'Q2', 'Q3', 'Q4'],\n barColor: palette.SUCCESS,\n staggerFrames: 8,\n },\n description: 'Four quarters, growing bars, green for revenue.',\n },\n {\n name: 'monthly-active-users',\n mood: ['tech-demo', 'editorial'],\n params: {\n data: [12, 18, 24, 31, 42, 58, 76, 94, 110, 142, 168, 215],\n labels: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n barColor: palette.VIOLET,\n gap: 10,\n staggerFrames: 4,\n },\n description: '12-month MAU growth chart.',\n },\n ],\n\n textParam: null,\n subtextParam: null,\n\n tokens: [\n { propPath: 'barColor', cssVar: '--cf-accent', fallback: palette.ACCENT, brandKitPath: 'colors.accent' },\n { propPath: 'background', cssVar: '--cf-bg', fallback: palette.BG, brandKitPath: 'colors.background' },\n ],\n\n durationInFrames: 90,\n fps: 30,\n width: 1920,\n height: 1080,\n\n preview: { thumbnailFrame: 60, mode: 'oneshot', defaultExample: 'quarterly-revenue' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport * as palette from '../../lib/palette';\nimport { AnimatedLineChart } from './index';\n\nconst paramsSchema = z.object({\n data: z.array(z.number()).min(2).max(60).default([12, 19, 8, 15, 22, 18, 28, 25, 32]).describe(\n 'Y-values. Any numbers; auto-scaled to fit. 8–14 points reads as a clean trend line.',\n ),\n width: z.number().min(400).max(1920).default(1000).describe('Chart width in pixels.'),\n height: z.number().min(200).max(1080).default(500).describe('Chart height in pixels.'),\n strokeColor: z.string().default(palette.ACCENT).describe(\n 'Line + dot color. Single accent — green reads as growth, red as alarm.',\n ),\n accentColor: z.string().default(palette.TEAL).describe('Endpoint dot + value accent.'),\n endpointValue: z.boolean().default(true).describe('Endpoint value counts up with the draw and holds.'),\n strokeWidth: z.number().min(1).max(16).default(4).describe('Line thickness in pixels.'),\n background: z.string().default(palette.BG).describe('Frame background.'),\n gridColor: z.string().default('rgba(255,255,255,0.07)').describe('Grid line color. Keep dim — grid sits behind the line.'),\n showDot: z.boolean().default(true).describe('Show the leading dot that traces the line as it draws.'),\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: 'animated-line-chart',\n component: AnimatedLineChart,\n name: 'Animated Line Chart',\n category: 'backgrounds',\n kind: 'component',\n version: '0.2.1',\n\n intent: 'render-chart',\n description:\n 'SVG line chart with stroke-dasharray draw-on animation and a leading dot that traces the path in realtime. Spring-driven progress with no bounce. Includes a faint background grid and a clean, crisp line.',\n useWhen:\n 'Trend lines (revenue, users, latency), \"the chart goes up\" hero beats, time-series narratives. Avoid for unordered categorical data (use animated-bar-chart) and avoid for >40 points at 1920×1080 (line becomes a noisy zigzag).',\n pairsWith: ['kinetic-type', 'cinematic-title', 'lower-third', 'pulsing-indicator'],\n avoidWith: ['animated-bar-chart'],\n tier: 'standard',\n useCase: ['explainer'],\n tags: ['background', 'chart', 'line', 'data', 'trend', 'analytics', 'svg', 'time-series'],\n mood: ['corporate', 'editorial', 'tech-demo', 'minimal'],\n\n paramsSchema,\n propDefaults: {\n data: [12, 19, 8, 15, 22, 18, 28, 25, 32],\n width: 1000,\n height: 500,\n strokeColor: palette.ACCENT,\n accentColor: palette.TEAL,\n strokeWidth: 4,\n background: palette.BG,\n gridColor: 'rgba(255,255,255,0.07)',\n endpointValue: true,\n showDot: true,\n speed: 1,\n },\n\n examples: [\n {\n name: 'growth-curve',\n mood: ['corporate', 'tech-demo'],\n params: {\n data: [10, 14, 18, 22, 28, 35, 44, 56, 72, 95],\n strokeColor: palette.SUCCESS,\n },\n description: 'Up-and-to-the-right growth chart, green.',\n },\n {\n name: 'latency-drop',\n mood: ['tech-demo', 'editorial'],\n params: {\n data: [820, 740, 680, 540, 420, 320, 240, 180, 140, 110],\n strokeColor: palette.TEAL,\n strokeWidth: 5,\n },\n description: 'Latency-down chart, blue. \"We made it 7× faster\".',\n },\n ],\n\n textParam: null,\n subtextParam: null,\n\n tokens: [\n { propPath: 'strokeColor', cssVar: '--cf-accent', fallback: palette.ACCENT, brandKitPath: 'colors.accent' },\n { propPath: 'background', cssVar: '--cf-bg', fallback: palette.BG, brandKitPath: 'colors.background' },\n ],\n\n durationInFrames: 120,\n fps: 30,\n width: 1920,\n height: 1080,\n\n preview: { thumbnailFrame: 90, mode: 'oneshot', defaultExample: 'growth-curve' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport * as palette from '../../lib/palette';\nimport { DitherGradientBg } from './index';\n\nconst hexColor = z.string().regex(/^#[0-9a-fA-F]{6}$/, 'hex #rrggbb');\n\nconst paramsSchema = z.object({\n color: hexColor.default(palette.BLUE).describe('Ink color of the dither dots.'),\n color2: hexColor.default(palette.TEAL).describe('Second ink — dots blend between the two along the field.'),\n background: hexColor.default(palette.BG).describe('Ground behind the dots.'),\n pixelSize: z.number().int().min(3).max(24).default(8).describe('Dither cell size in px at 1080p. 6–10 reads deliberate; larger goes retro.'),\n angle: z.number().min(-180).max(180).default(-30).describe('Base gradient direction in degrees.'),\n speed: z.number().min(0.1).max(3).default(1).describe('Field drift speed.'),\n seed: z.number().int().min(0).max(9999).default(7).describe('Field seed — different warp layouts.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'dither-gradient-bg',\n component: DitherGradientBg,\n name: 'Dither Gradient Background',\n category: 'backgrounds',\n kind: 'component',\n version: '0.1.1',\n\n intent: 'gradient-fill',\n description:\n 'Ordered-dither gradient — an animated luminance field quantized through a Bayer 8×8 matrix into hard pixel dots that drift and warp slowly. The pixel-craft dev-tool aesthetic: texture with intent, zero banding by construction. Sits between silk-flow-bg (organic threads) and mesh-gradient-bg (soft wash) as the technical register.',\n useWhen:\n 'Dev-tool launches, terminal/CLI product beats, changelog and release videos — anywhere the brand voice is precise and software-native. Title-safe by default (ambient drift). Pair with typewriter / terminal-simulator / glass-code-block.',\n pairsWith: ['typewriter', 'terminal-simulator', 'glass-code-block', 'stat-counter', 'cinematic-title'],\n avoidWith: ['mesh-gradient-bg', 'silk-flow-bg', 'dynamic-grid'],\n tier: 'recommended',\n useCase: ['background', 'intro'],\n tags: ['background', 'dither', 'bayer', 'pixel', 'gradient', 'retro-digital', 'dev-tool'],\n mood: ['tech-demo', 'minimal', 'editorial'],\n\n paramsSchema,\n propDefaults: {\n color: palette.BLUE,\n color2: palette.TEAL,\n background: palette.BG,\n pixelSize: 8,\n angle: -30,\n speed: 1,\n seed: 7,\n },\n\n examples: [\n { name: 'indigo-terminal', mood: ['tech-demo'], params: { color: palette.BLUE, color2: palette.TEAL, background: palette.BG, pixelSize: 8, angle: -30, speed: 1, seed: 7 } },\n { name: 'phosphor', mood: ['tech-demo', 'minimal'], params: { color: palette.SUCCESS, color2: palette.SUCCESS_SOFT, background: palette.BG_DEEP, pixelSize: 6, angle: -15, speed: 0.8, seed: 21 } },\n { name: 'paper-print', mood: ['editorial', 'minimal'], params: { color: '#334155', color2: '#94a3b8', background: '#f5f1e8', pixelSize: 7, angle: -40, speed: 0.6, seed: 12 } },\n ],\n\n textParam: null,\n subtextParam: null,\n tokens: [\n { propPath: 'background', cssVar: '--cf-bg', fallback: palette.BG, brandKitPath: 'colors.background' },\n { propPath: 'color', cssVar: '--cf-accent', fallback: palette.BLUE, brandKitPath: 'colors.accent' },\n ],\n\n durationInFrames: 300,\n fps: 30,\n width: 1920,\n height: 1080,\n\n preview: { thumbnailFrame: 90, mode: 'loop', defaultExample: 'indigo-terminal' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport * as palette from '../../lib/palette';\nimport { DynamicGrid } from './index';\n\nconst paramsSchema = z.object({\n cellSize: z.number().min(20).max(200).default(60).describe('Grid cell size in pixels at 1920×1080.'),\n lineColor: z.string().default('rgba(255,255,255,0.22)').describe('Grid line color. Low-alpha keeps it underneath — but stay above ~0.15 or H.264 crushes it to black.'),\n background: z.string().default(palette.BG).describe('Frame background.'),\n direction: z.enum(['diagonal', 'horizontal', 'vertical']).default('diagonal').describe('Animation direction.'),\n speed: z.number().min(0.25).max(4).default(1).describe('Playback speed.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'dynamic-grid',\n component: DynamicGrid,\n name: 'Dynamic Grid',\n category: 'backgrounds',\n kind: 'component',\n version: '0.1.2',\n\n intent: 'pattern-fill',\n description:\n 'Slowly translating grid lines across a dark background. The \"tech-product\" background for code, terminal, or product-demo content. Three directions of motion (diagonal/horizontal/vertical).',\n useWhen:\n 'Tech demos, code reveals, dark-mode UI showcases, anywhere a clean grid sits underneath the content. Pair with terminal-simulator or glass-code-block for the full developer aesthetic.',\n pairsWith: ['terminal-simulator', 'glass-code-block', 'typewriter', 'pulsing-indicator'],\n avoidWith: ['mesh-gradient-bg'],\n tier: 'standard',\n useCase: ['background'],\n tags: ['background', 'grid', 'tech', 'lines', 'pattern', 'minimal'],\n mood: ['tech-demo', 'minimal', 'corporate'],\n\n paramsSchema,\n propDefaults: { cellSize: 60, lineColor: 'rgba(255,255,255,0.22)', background: palette.BG, direction: 'diagonal', speed: 1 },\n\n examples: [\n { name: 'tech-default', mood: ['tech-demo'], params: { cellSize: 60, lineColor: 'rgba(255,255,255,0.22)', background: palette.BG, direction: 'diagonal', speed: 1 } },\n { name: 'tight-horizontal', mood: ['minimal'], params: { cellSize: 40, lineColor: 'rgba(255,255,255,0.06)', background: palette.BG, direction: 'horizontal', speed: 0.7 } },\n ],\n\n textParam: null,\n subtextParam: null,\n tokens: [\n { propPath: 'background', cssVar: '--cf-bg', fallback: palette.BG, brandKitPath: 'colors.background' },\n { propPath: 'lineColor', cssVar: '--cf-grid-line', fallback: 'rgba(255,255,255,0.22)', brandKitPath: 'colors.gridLine' },\n ],\n\n durationInFrames: 240,\n fps: 30,\n width: 1920,\n height: 1080,\n\n preview: { thumbnailFrame: 60, mode: 'loop', defaultExample: 'tech-default' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport * as palette from '../../lib/palette';\nimport { EcosystemConstellation } from './index';\n\nconst paramsSchema = z.object({\n satelliteCount: z.number().int().min(3).max(8).default(6).describe(\n 'How many satellite logos orbit the center. 5–7 reads as a busy ecosystem; 3–4 feels focused.',\n ),\n centerLabel: z.string().min(1).max(3).default('V').describe(\n 'Single character (or short monogram) shown in the center hub. The \"your brand\" letter.',\n ),\n accentColor: z.string().default(palette.VIOLET).describe(\n 'Center hub gradient and connection-line color. Brand accent.',\n ),\n speed: z.number().min(0.25).max(4).default(1).describe('Playback speed multiplier (orbit + pulse + data-fire).'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'ecosystem-constellation',\n component: EcosystemConstellation,\n name: 'Ecosystem Constellation',\n category: 'backgrounds',\n kind: 'component',\n version: '0.1.1',\n\n intent: 'fill-background',\n description:\n 'Center brand hub with satellite logos (GitHub, Vercel, Stripe, Slack, Linear, Figma, Notion, Discord) orbiting on elliptical paths. Connection lines pulse on a 30-frame cycle, illuminating one satellite at a time to suggest \"data flowing\". Satellites assemble from offscreen on a staggered spring at frame 0.',\n useWhen:\n 'Integration showcases (\"works with all your tools\"), platform-overview heroes, ecosystem maps, \"we connect your stack\" beats. Avoid when the integrations shown don\\'t match the audience\\'s stack — the brand list is fixed in this primitive.',\n pairsWith: ['cinematic-title', 'kinetic-type', 'lower-third', 'volumetric-rays'],\n avoidWith: ['perspective-marquee', 'infinite-bento-pan'],\n tier: 'standard',\n useCase: ['explainer', 'background'],\n tags: ['background', 'ecosystem', 'integrations', 'orbit', 'constellation', 'logos', 'platform'],\n mood: ['tech-demo', 'cinematic', 'corporate'],\n\n paramsSchema,\n propDefaults: { satelliteCount: 6, centerLabel: 'V', accentColor: palette.VIOLET, speed: 1 },\n\n examples: [\n {\n name: 'platform-hub',\n mood: ['tech-demo'],\n params: { satelliteCount: 6, centerLabel: 'V', accentColor: palette.VIOLET },\n description: 'Default 6-satellite purple hub.',\n },\n {\n name: 'tight-trio',\n mood: ['minimal', 'corporate'],\n params: { satelliteCount: 3, centerLabel: 'C', accentColor: palette.BLUE },\n description: 'Three satellites only — focused integration story.',\n },\n ],\n\n textParam: 'centerLabel',\n subtextParam: null,\n\n tokens: [\n { propPath: 'accentColor', cssVar: '--cf-accent', fallback: palette.VIOLET, brandKitPath: 'colors.accent' },\n ],\n\n durationInFrames: 240,\n fps: 30,\n width: 1920,\n height: 1080,\n\n preview: { thumbnailFrame: 120, mode: 'loop', defaultExample: 'platform-hub' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport * as palette from '../../lib/palette';\nimport { InfiniteMarquee } from './index';\n\nconst paramsSchema = z.object({\n text: z.string().default('CUEFRAME / NEXT / NEW / NOW / ').describe('Repeating marquee text. End with a separator (\" / \" or \" • \") for clean repetition.'),\n fontSize: z.number().min(20).max(280).default(120).describe('Font size in pixels.'),\n color: z.string().default(palette.SURFACE).describe('Text color.'),\n fontWeight: z.number().min(100).max(900).default(800).describe('Font weight. Heavy reads as the news-ticker / runway feel.'),\n pixelsPerFrame: z.number().min(0.5).max(20).default(4).describe('Scroll speed in px/frame. 4 reads steady; >8 reads frantic.'),\n stroke: z.boolean().default(false).describe('Render as outline-only (stroke) text.'),\n strokeColor: z.string().default(palette.SURFACE).describe('Stroke color when stroke=true.'),\n background: z.string().default(palette.TEXT_HI).describe('Frame background.'),\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: 'infinite-marquee',\n component: InfiniteMarquee,\n name: 'Infinite Marquee',\n category: 'backgrounds',\n kind: 'component',\n version: '0.1.1',\n\n intent: 'pattern-fill',\n description:\n 'Endlessly scrolling text band. Repeating word/phrase scrolling left across the frame as a background. Stripe / fashion-runway / news-ticker aesthetic.',\n useWhen:\n 'Lower-third tickers, product-page bands, brand statement loops. Stack two with opposite directions for an even more graphic feel. Avoid for moments that need narrative attention — the constant motion is hypnotic.',\n pairsWith: ['cinematic-title', 'lower-third', 'shimmer-sweep'],\n avoidWith: [],\n tier: 'niche',\n useCase: ['background'],\n tags: ['background', 'marquee', 'ticker', 'scrolling', 'repeating', 'loop'],\n mood: ['breaking-news', 'corporate', 'aggressive'],\n\n paramsSchema,\n propDefaults: { text: 'CUEFRAME / NEXT / NEW / NOW / ', fontSize: 120, color: palette.SURFACE, fontWeight: 800, pixelsPerFrame: 4, stroke: false, strokeColor: palette.SURFACE, background: palette.TEXT_HI, speed: 1 },\n\n examples: [\n { name: 'product-band', mood: ['corporate'], params: { text: 'cueframe / cueframe / cueframe / ', fontSize: 100, color: palette.SURFACE, fontWeight: 800, pixelsPerFrame: 4, stroke: false, strokeColor: palette.SURFACE, background: palette.TEXT_HI, speed: 1 } },\n { name: 'breaking-ticker', mood: ['breaking-news'], params: { text: 'BREAKING / LIVE / NOW / ', fontSize: 140, color: palette.DANGER, fontWeight: 900, pixelsPerFrame: 6, stroke: false, strokeColor: palette.DANGER, background: palette.BG, speed: 1 } },\n { name: 'outline-runway', mood: ['minimal'], params: { text: 'PREMIUM / PREMIUM / PREMIUM / ', fontSize: 160, color: 'transparent', fontWeight: 900, pixelsPerFrame: 3, stroke: true, strokeColor: palette.BG, background: palette.TEXT_HI, speed: 1 } },\n ],\n\n textParam: 'text',\n subtextParam: null,\n tokens: [\n { propPath: 'color', cssVar: '--cf-text', fallback: palette.SURFACE, brandKitPath: 'colors.text' },\n { propPath: 'background', cssVar: '--cf-bg', fallback: palette.TEXT_HI, brandKitPath: 'colors.background' },\n ],\n\n durationInFrames: 240,\n fps: 30,\n width: 1920,\n height: 1080,\n\n preview: { thumbnailFrame: 60, mode: 'loop', defaultExample: 'product-band' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport * as palette from '../../lib/palette';\nimport { MeshGradientBg } from './index';\n\nconst paramsSchema = z.object({\n colors: z.array(z.string()).min(2).max(8).default([palette.BLUE, palette.VIOLET, palette.TEAL]).describe('Mesh blob colors. 2–3 analogous hues read premium; whole-wheel rainbows read templated.'),\n speed: z.number().min(0.25).max(4).default(1).describe('Animation speed.'),\n background: z.string().default(palette.BG).describe('Frame background underneath the blobs.'),\n blur: z.number().min(0).max(160).default(100).describe('Gaussian blur radius for the mesh — high values create the soft mesh look.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'mesh-gradient-bg',\n component: MeshGradientBg,\n name: 'Mesh Gradient Background',\n category: 'backgrounds',\n kind: 'component',\n version: '0.2.1',\n\n intent: 'gradient-fill',\n description:\n 'Animated mesh gradient — multiple soft-blurred color blobs drifting across the frame. The Stripe / Linear / Vercel marketing-page background, in motion. Universal warm/cool/brand-tinted background.',\n useWhen:\n 'Default background for any text-overlay primitive, hero frames, brand pages, anywhere a static color would feel flat. Pair with brand-kit colors for cascade theming.',\n pairsWith: ['blur-reveal', 'cinematic-title', 'kinetic-type', 'shimmer-sweep'],\n avoidWith: ['dynamic-grid'],\n tier: 'standard',\n useCase: ['background'],\n tags: ['background', 'mesh', 'gradient', 'blobs', 'soft', 'animated'],\n mood: ['minimal', 'soft', 'corporate', 'cinematic'],\n\n paramsSchema,\n propDefaults: { colors: [palette.BLUE, palette.VIOLET, palette.TEAL], speed: 1, background: palette.BG, blur: 100 },\n\n examples: [\n { name: 'launch-wash', mood: ['minimal', 'corporate'], params: { colors: [palette.BLUE, palette.VIOLET, palette.TEAL], speed: 1, background: palette.BG, blur: 100 } },\n { name: 'brand-warm', mood: ['corporate'], params: { colors: [palette.ACCENT_STRONG, palette.ACCENT, palette.WARNING], speed: 0.7, background: palette.BG, blur: 100 } },\n { name: 'cinema-dark', mood: ['cinematic'], params: { colors: ['#1e3a5f', '#3b1f5e', '#1e293b'], speed: 0.5, background: palette.BG, blur: 120 } },\n ],\n\n textParam: null,\n subtextParam: null,\n tokens: [\n { propPath: 'background', cssVar: '--cf-bg', fallback: palette.BG, brandKitPath: 'colors.background' },\n ],\n\n durationInFrames: 240,\n fps: 30,\n width: 1920,\n height: 1080,\n\n preview: { thumbnailFrame: 120, mode: 'loop', defaultExample: 'launch-wash' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport * as palette from '../../lib/palette';\nimport { PerspectiveMarquee } from './index';\n\nconst paramsSchema = z.object({\n items: z.array(z.string().min(1).max(80)).min(2).max(40).default([\n 'Northwind', 'Vertex', 'Lumina', 'Datum', 'Forgeworks', 'Overture', 'Solace', 'Pinnacle',\n ]).describe(\n 'Items to scroll across the marquee. Brand names, feature words, customer logos-as-text. 6–12 items loops cleanly.',\n ),\n fontSize: z.number().min(40).max(240).default(84).describe('Item font size in pixels at 1920×1080.'),\n color: z.string().default(palette.TEXT_HI).describe('Item text color.'),\n fontWeight: z.number().min(100).max(900).default(700).describe('CSS font weight. 700–800 reads as confident logo wall.'),\n pixelsPerFrame: z.number().min(0.25).max(20).default(2).describe('Marquee scroll rate. 1–3 is the readable sweet spot.'),\n rotateY: z.number().min(-60).max(60).default(-28).describe(\n 'Y-axis 3D rotation in degrees. Negative tilts the row to the left. 0 disables the perspective effect.',\n ),\n rotateX: z.number().min(-30).max(30).default(8).describe('X-axis tilt in degrees.'),\n perspective: z.number().min(400).max(3000).default(1200).describe(\n 'CSS perspective in pixels. Lower = more dramatic foreshortening; 1000–1400 reads as cinematic.',\n ),\n fadeColor: z.string().default(palette.BG).describe('Edge-fade color. Match the background for a clean vignette.'),\n background: z.string().default(palette.BG).describe('Frame background.'),\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: 'perspective-marquee',\n component: PerspectiveMarquee,\n name: 'Perspective Marquee',\n category: 'backgrounds',\n kind: 'component',\n version: '0.1.2',\n\n intent: 'fill-background',\n description:\n 'Infinite horizontal marquee tilted in 3D with rotateX/rotateY perspective. Items fade and blur toward the edges via depth-of-field calculation, with a vignette fade to background on all four sides. The \"logo wall in motion\" — modern alternative to the flat infinite-marquee.',\n useWhen:\n 'Brand walls (\"trusted by\"), feature word-clouds, customer logo strips, modern hero backgrounds for product launches. Avoid when items must remain individually readable through the entire scroll (edge blur reduces legibility) — use infinite-marquee for that.',\n pairsWith: ['cinematic-title', 'kinetic-type', 'volumetric-rays', 'grain'],\n avoidWith: ['infinite-marquee', 'mesh-gradient-bg'],\n tier: 'standard',\n useCase: ['background'],\n tags: ['background', 'marquee', 'perspective', '3d', 'logo-wall', 'scrolling', 'tilted'],\n mood: ['cinematic', 'tech-demo', 'editorial', 'corporate'],\n\n paramsSchema,\n propDefaults: {\n items: ['Northwind', 'Vertex', 'Lumina', 'Datum', 'Forgeworks', 'Overture', 'Arc', 'Cursor'],\n fontSize: 84,\n color: palette.TEXT_HI,\n fontWeight: 700,\n pixelsPerFrame: 2,\n rotateY: -28,\n rotateX: 8,\n perspective: 1200,\n fadeColor: palette.BG,\n background: palette.BG,\n speed: 1,\n },\n\n examples: [\n {\n name: 'logo-wall',\n mood: ['tech-demo', 'corporate'],\n params: {\n items: ['Northwind', 'Vertex', 'Lumina', 'Datum', 'Forgeworks', 'Overture'],\n rotateY: -28,\n rotateX: 8,\n },\n description: 'Default tilted brand-wall.',\n },\n {\n name: 'feature-keywords',\n mood: ['editorial', 'cinematic'],\n params: {\n items: ['Streaming', 'Caching', 'Tools', 'Eval', 'Tracing', 'Costs', 'Routing'],\n fontSize: 100,\n rotateY: -20,\n rotateX: 4,\n color: palette.WARNING,\n },\n description: 'Feature words, gold, gentler tilt — editorial hero.',\n },\n ],\n\n textParam: null,\n subtextParam: null,\n\n tokens: [\n { propPath: 'background', cssVar: '--cf-bg', fallback: palette.BG, brandKitPath: 'colors.background' },\n { propPath: 'fadeColor', cssVar: '--cf-bg', fallback: palette.BG, brandKitPath: 'colors.background' },\n { propPath: 'color', cssVar: '--cf-fg', fallback: palette.TEXT_HI, brandKitPath: 'colors.textOnMedia' },\n ],\n\n durationInFrames: 240,\n fps: 30,\n width: 1920,\n height: 1080,\n\n preview: { thumbnailFrame: 120, mode: 'loop', defaultExample: 'logo-wall' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport * as palette from '../../lib/palette';\nimport { SilkFlowBg } from './index';\n\nconst hexColor = z.string().regex(/^#[0-9a-fA-F]{6}$/, 'hex #rrggbb');\n\nconst paramsSchema = z.object({\n colors: z.array(hexColor).min(1).max(5).default([palette.BLUE, palette.VIOLET, palette.TEAL]).describe('Thread hues. First = dominant (~70% of threads), rest = sparse accents. 2–3 is the sweet spot.'),\n background: hexColor.default(palette.BG).describe('Ground color. Dark grounds get luminous additive threads; light grounds get ink-on-paper strokes.'),\n density: z.number().min(0.2).max(2).default(1).describe('Thread-count multiplier (1 ≈ 170 threads).'),\n speed: z.number().min(0.1).max(3).default(1).describe('Motion speed — travelling light + silk sway.'),\n glow: z.number().min(0).max(1).default(0.55).describe('Bloom intensity around the threads.'),\n grain: z.number().min(0).max(0.3).default(0.07).describe('Film-grain opacity. Kills gradient banding; 0 disables.'),\n vignette: z.number().min(0).max(1).default(0.45).describe('Edge falloff that seats a centered title. 0 disables.'),\n angle: z.number().min(-180).max(180).default(-16).describe('Base flow direction in degrees.'),\n seed: z.number().int().min(0).max(9999).default(7).describe('Field seed — different seeds give different silk layouts.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'silk-flow-bg',\n component: SilkFlowBg,\n name: 'Silk Flow Background',\n category: 'backgrounds',\n kind: 'component',\n version: '0.1.1',\n\n intent: 'gradient-fill',\n description:\n 'Luminous flow-field silk — hundreds of fine threads drawn through an organic noise current, with travelling light, bloom, film grain and vignette. Generative-art-grade texture that reads authored, not generated: the title-sequence background for product launches. On light grounds it becomes an ink-etching on paper.',\n useWhen:\n 'Hero backgrounds for product launch and marketing videos, behind cinematic-title / hero text, brand films — anywhere the background must feel designed. Prefer over mesh-gradient-bg when the video sells a product.',\n pairsWith: ['cinematic-title', 'blur-reveal', 'masked-slide-reveal', 'kinetic-type'],\n avoidWith: ['mesh-gradient-bg', 'dynamic-grid', 'particles'],\n tier: 'recommended',\n useCase: ['background', 'intro'],\n tags: ['background', 'silk', 'flow-field', 'threads', 'generative', 'luminous', 'grain', 'launch'],\n mood: ['cinematic', 'editorial', 'minimal', 'corporate'],\n\n paramsSchema,\n propDefaults: {\n colors: [palette.BLUE, palette.VIOLET, palette.TEAL],\n background: palette.BG,\n density: 1,\n speed: 1,\n glow: 0.55,\n grain: 0.07,\n vignette: 0.45,\n angle: -16,\n seed: 7,\n },\n\n examples: [\n { name: 'launch-night', mood: ['cinematic', 'corporate'], params: { colors: [palette.BLUE, palette.VIOLET, palette.TEAL], background: palette.BG, density: 1, speed: 1, glow: 0.55, grain: 0.07, vignette: 0.45, angle: -16, seed: 7 } },\n { name: 'ember', mood: ['cinematic'], params: { colors: [palette.ACCENT_STRONG, palette.ACCENT, palette.ACCENT_SOFT], background: palette.BG, density: 0.9, speed: 0.8, glow: 0.6, grain: 0.08, vignette: 0.5, angle: -30, seed: 21 } },\n { name: 'aurora', mood: ['cinematic', 'minimal'], params: { colors: [palette.SUCCESS, palette.TEAL, palette.BLUE], background: palette.BG, density: 1.1, speed: 0.7, glow: 0.65, grain: 0.06, vignette: 0.4, angle: -60, seed: 4 } },\n { name: 'ink-paper', mood: ['editorial', 'minimal'], params: { colors: ['#334155', '#0f172a', '#b45309'], background: '#f5f1e8', density: 0.8, speed: 0.6, glow: 0.25, grain: 0.05, vignette: 0.3, angle: -12, seed: 12 } },\n { name: 'mono-wire', mood: ['minimal'], params: { colors: [palette.TEXT_FAINT], background: palette.BG, density: 0.7, speed: 0.9, glow: 0.4, grain: 0.06, vignette: 0.4, angle: -8, seed: 33 } },\n ],\n\n textParam: null,\n subtextParam: null,\n tokens: [\n { propPath: 'background', cssVar: '--cf-bg', fallback: palette.BG, brandKitPath: 'colors.background' },\n ],\n\n durationInFrames: 300,\n fps: 30,\n width: 1920,\n height: 1080,\n\n preview: { thumbnailFrame: 90, mode: 'loop', defaultExample: 'launch-night' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport * as palette from '../../lib/palette';\nimport { VectorField } from './index';\n\nconst hexColor = z.string().regex(/^#[0-9a-fA-F]{6}$/, 'hex #rrggbb');\n\nconst paramsSchema = z.object({\n pointCount: z.number().int().min(30).max(400).default(140).describe('Embedding points in the field.'),\n color: hexColor.default(palette.BLUE).describe('Base point color.'),\n accentColor: hexColor.default(palette.ACCENT).describe('Query point + neighbor-edge accent.'),\n background: hexColor.default(palette.BG).describe('Ground.'),\n queryAt: z.number().int().min(0).max(200).default(40).describe('Frame the query point lands (ring pulse + neighbor pull).'),\n neighbors: z.number().int().min(2).max(14).default(6).describe('Nearest neighbors that brighten and connect.'),\n seed: z.number().int().min(0).max(9999).default(7).describe('Layout seed — different point fields.'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'vector-field',\n component: VectorField,\n name: 'Vector Field',\n category: 'backgrounds',\n kind: 'component',\n version: '0.1.1',\n\n intent: 'gradient-fill',\n description:\n 'Embedding space, cinematized: a drifting field of points; a query lands with a ring pulse, its nearest neighbors brighten and draw shimmering edges to it, and the local cluster leans in. Semantic search made visible. Ambient enough to hold a title.',\n useWhen:\n 'RAG/search product beats, \"understands meaning\" claims, memory/recall features, vector-DB launches. Title-safe ambient; the query beat lands ~1.5s in. For app-icon orbits use ecosystem-constellation instead.',\n pairsWith: ['token-stream', 'stat-counter', 'cinematic-title', 'vignette'],\n avoidWith: ['ecosystem-constellation', 'particles', 'data-flow-pipes'],\n tier: 'recommended',\n useCase: ['background', 'intro', 'explainer'],\n tags: ['background', 'ai', 'embeddings', 'vectors', 'semantic-search', 'rag', 'points'],\n mood: ['tech-demo', 'minimal', 'cinematic'],\n\n paramsSchema,\n propDefaults: {\n pointCount: 140,\n color: palette.BLUE,\n accentColor: palette.ACCENT,\n background: palette.BG,\n queryAt: 40,\n neighbors: 6,\n seed: 7,\n },\n\n examples: [\n { name: 'semantic-search', mood: ['tech-demo'], params: { pointCount: 140, color: palette.BLUE, accentColor: palette.ACCENT, background: palette.BG, queryAt: 40, neighbors: 6, seed: 7 } },\n { name: 'memory-recall', mood: ['cinematic', 'minimal'], params: { pointCount: 220, color: palette.BLUE, accentColor: palette.VIOLET, background: palette.BG, queryAt: 55, neighbors: 8, seed: 21 } },\n ],\n\n textParam: null,\n subtextParam: null,\n tokens: [\n { propPath: 'background', cssVar: '--cf-bg', fallback: palette.BG, brandKitPath: 'colors.background' },\n { propPath: 'accentColor', cssVar: '--cf-accent', fallback: palette.ACCENT, brandKitPath: 'colors.accent' },\n ],\n\n durationInFrames: 240,\n fps: 30,\n width: 1920,\n height: 1080,\n\n preview: { thumbnailFrame: 80, mode: 'loop', defaultExample: 'semantic-search' },\n};\n","import { z } from 'zod';\nimport type { PrimitiveMeta } from '../../lib/types';\nimport * as palette from '../../lib/palette';\nimport { VolumetricRays } from './index';\n\nconst paramsSchema = z.object({\n text: z.string().min(1).max(48).default('REMOCN').describe(\n 'Text the rays pour through. 4–8 characters reads best — longer strings shrink and lose the god-rays effect. Auto-fits (shrinks to one line).',\n ),\n fontSize: z.number().min(80).max(480).default(240).describe('Font size in pixels at 1920×1080.'),\n fontWeight: z.number().min(100).max(900).default(800).describe(\n 'Font weight. 700–900 reads dramatic; <600 looks washed out by the bloom.',\n ),\n rayColor: z.string().default(palette.ACCENT).describe(\n 'Ray + bloom color. Warm yellows and oranges read as sun; cool cyans read as data/sci-fi.',\n ),\n background: z.string().default(palette.BG).describe('Frame background. Should be near-black for the rays to read.'),\n textColor: z.string().default(palette.BG).describe(\n 'Front silhouette color. Match background to make the letters read as cut-outs against the light.',\n ),\n intensity: z.number().min(0).max(2).default(1).describe(\n 'Bloom + ray strength multiplier. 0.5 reads subtle; 1 is canonical; >1.5 starts blowing out.',\n ),\n speed: z.number().min(0.25).max(4).default(1).describe('Playback speed multiplier (rotation + bloom ramp).'),\n}).passthrough();\n\ntype Params = z.infer<typeof paramsSchema>;\n\nexport const config: PrimitiveMeta<Params> = {\n id: 'volumetric-rays',\n component: VolumetricRays,\n name: 'Volumetric Rays',\n category: 'backgrounds',\n kind: 'component',\n version: '0.1.1',\n\n intent: 'animate-rays',\n description:\n 'God-rays / volumetric-light effect built entirely from CSS + SVG masks. Same text rendered three times: a heavily-blurred halo behind, a conic-gradient ray mask clipped to the text shape, and a solid silhouette in front. The result reads as light pouring through cut-out lettering. Slow rotation + sine-wave halo pulse keep the scene from feeling frozen.',\n useWhen:\n 'Cinematic title cards, \"the announcement\" reveals, brand-name heroes, dramatic openers. Avoid for body copy or anything that needs to be read quickly (the bloom obscures text edges) and avoid stacking with other heavy bloom/glow effects (kinetic-type, mesh-gradient-bg).',\n pairsWith: ['cinematic-title', 'grain', 'vignette', 'perspective-marquee'],\n avoidWith: ['mesh-gradient-bg', 'kinetic-type'],\n tier: 'standard',\n useCase: ['intro', 'background'],\n tags: ['background', 'rays', 'volumetric', 'god-rays', 'bloom', 'cinematic', 'title'],\n mood: ['cinematic', 'aggressive', 'editorial'],\n\n paramsSchema,\n propDefaults: {\n text: 'REMOCN',\n fontSize: 240,\n fontWeight: 800,\n rayColor: palette.ACCENT,\n background: palette.BG,\n textColor: palette.BG,\n intensity: 1,\n speed: 1,\n },\n\n examples: [\n {\n name: 'golden-hero',\n mood: ['cinematic', 'editorial'],\n params: { text: 'LAUNCH', rayColor: palette.ACCENT, intensity: 1 },\n description: 'Default warm-yellow god-rays for a brand reveal.',\n },\n {\n name: 'cyber-blue',\n mood: ['cinematic', 'aggressive'],\n params: { text: '2026', rayColor: palette.TEAL, fontSize: 280, intensity: 1.2 },\n description: 'Cyan rays — sci-fi / cyber feel.',\n },\n ],\n\n textParam: 'text',\n subtextParam: null,\n\n tokens: [\n { propPath: 'rayColor', cssVar: '--cf-accent', fallback: palette.ACCENT, brandKitPath: 'colors.accent' },\n { propPath: 'background', cssVar: '--cf-bg', fallback: palette.BG, brandKitPath: 'colors.background' },\n { propPath: 'textColor', cssVar: '--cf-bg', fallback: palette.BG, brandKitPath: 'colors.background' },\n ],\n\n durationInFrames: 240,\n fps: 30,\n width: 1920,\n height: 1080,\n\n preview: { thumbnailFrame: 90, mode: 'loop', defaultExample: 'golden-hero' },\n};\n","// @cueframe/primitives/backgrounds — full-frame visual fills\n\nimport type { Catalog } from '../lib/types';\n\nexport { AnimatedBarChart } from './animated-bar-chart';\nexport { AnimatedLineChart } from './animated-line-chart';\nexport { DitherGradientBg } from './dither-gradient-bg';\nexport { DynamicGrid } from './dynamic-grid';\nexport { EcosystemConstellation } from './ecosystem-constellation';\nexport { InfiniteMarquee } from './infinite-marquee';\nexport { MeshGradientBg } from './mesh-gradient-bg';\nexport { PerspectiveMarquee } from './perspective-marquee';\nexport { SilkFlowBg } from './silk-flow-bg';\nexport { VectorField } from './vector-field';\nexport { VolumetricRays } from './volumetric-rays';\n\nimport { config as animatedBarChart } from './animated-bar-chart/config';\nimport { config as animatedLineChart } from './animated-line-chart/config';\nimport { config as ditherGradientBg } from './dither-gradient-bg/config';\nimport { config as dynamicGrid } from './dynamic-grid/config';\nimport { config as ecosystemConstellation } from './ecosystem-constellation/config';\nimport { config as infiniteMarquee } from './infinite-marquee/config';\nimport { config as meshGradientBg } from './mesh-gradient-bg/config';\nimport { config as perspectiveMarquee } from './perspective-marquee/config';\nimport { config as silkFlowBg } from './silk-flow-bg/config';\nimport { config as vectorField } from './vector-field/config';\nimport { config as volumetricRays } from './volumetric-rays/config';\n\nexport const catalog: Catalog = [\n animatedBarChart, animatedLineChart, ditherGradientBg, dynamicGrid, ecosystemConstellation,\n infiniteMarquee, meshGradientBg, perspectiveMarquee, silkFlowBg, vectorField, volumetricRays,\n];\n"],"mappings":"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","names":["spring","useCurrentFrame","useVideoConfig","jsx","jsxs","useCurrentFrame","useVideoConfig","spring","useCurrentFrame","useVideoConfig","jsx","useCurrentFrame","useVideoConfig","useCurrentFrame","jsx","useCurrentFrame","spring","useCurrentFrame","useVideoConfig","jsx","jsxs","useCurrentFrame","useVideoConfig","spring","useCurrentFrame","jsx","jsxs","useCurrentFrame","useCurrentFrame","useVideoConfig","jsx","useCurrentFrame","useVideoConfig","useCurrentFrame","jsx","jsxs","FONT_FAMILY","useCurrentFrame","useEffect","useRef","useCurrentFrame","useVideoConfig","jsx","jsxs","hash2","smoother","noise2","isColorDark","useCurrentFrame","useVideoConfig","useRef","useEffect","useEffect","useRef","useCurrentFrame","useVideoConfig","jsx","hash2","hexToRgb","useCurrentFrame","useVideoConfig","useRef","useEffect","interpolate","useCurrentFrame","jsx","jsxs","FONT_FAMILY","useCurrentFrame","interpolate","z","paramsSchema","z","config","z","z","paramsSchema","config","z","paramsSchema","z","config","z","paramsSchema","z","config","z","paramsSchema","z","config","z","paramsSchema","z","config","z","paramsSchema","z","config","z","hexColor","z","paramsSchema","config","z","hexColor","z","paramsSchema","config","z","paramsSchema","z","config","config"]}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
// src/lib/text/motion.ts
|
|
2
|
-
import { interpolate, spring, Easing } from "remotion";
|
|
3
|
-
function wordPop(frame, fps, startFrame, durationFrames, restScale) {
|
|
4
|
-
const opacity = interpolate(frame, [startFrame, startFrame + durationFrames], [0, 1], {
|
|
5
|
-
extrapolateLeft: "clamp",
|
|
6
|
-
extrapolateRight: "clamp",
|
|
7
|
-
easing: Easing.out(Easing.cubic)
|
|
8
|
-
});
|
|
9
|
-
const settle = spring({ frame, fps, delay: startFrame, config: { stiffness: 220, damping: 26, mass: 0.9 } });
|
|
10
|
-
return { opacity, scale: interpolate(settle, [0, 1], [restScale, 1]) };
|
|
11
|
-
}
|
|
12
|
-
function fadeProgress(tMs, revealAtMs, windowMs) {
|
|
13
|
-
return Math.max(0, Math.min(1, (tMs - revealAtMs) / windowMs));
|
|
14
|
-
}
|
|
15
|
-
function staggerUp(frame, index, staggerDelay, windowFrames, distance) {
|
|
16
|
-
const local = frame - index * staggerDelay;
|
|
17
|
-
const opacity = interpolate(local, [0, windowFrames], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
18
|
-
const y = interpolate(local, [0, windowFrames], [distance, 0], { extrapolateLeft: "clamp", extrapolateRight: "clamp" });
|
|
19
|
-
return { opacity, y };
|
|
20
|
-
}
|
|
21
|
-
function staggerRise(distance, progress, ease) {
|
|
22
|
-
return distance * (1 - ease(progress));
|
|
23
|
-
}
|
|
24
|
-
function resolveEasing(name) {
|
|
25
|
-
switch (name) {
|
|
26
|
-
case "ease":
|
|
27
|
-
return Easing.bezier(0.25, 0.1, 0.25, 1);
|
|
28
|
-
case "ease-in":
|
|
29
|
-
return Easing.bezier(0.42, 0, 1, 1);
|
|
30
|
-
case "ease-out":
|
|
31
|
-
return Easing.bezier(0, 0, 0.58, 1);
|
|
32
|
-
case "ease-in-out":
|
|
33
|
-
return Easing.bezier(0.42, 0, 0.58, 1);
|
|
34
|
-
case "linear":
|
|
35
|
-
default:
|
|
36
|
-
return (t) => t;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export {
|
|
41
|
-
wordPop,
|
|
42
|
-
fadeProgress,
|
|
43
|
-
staggerUp,
|
|
44
|
-
staggerRise,
|
|
45
|
-
resolveEasing
|
|
46
|
-
};
|
|
47
|
-
//# sourceMappingURL=chunk-G2B3G4HK.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/text/motion.ts"],"sourcesContent":["import { interpolate, spring, Easing } from 'remotion';\n\n/**\n * The shared per-word entrance vocabulary. Three NAMED pure functions (not one\n * accreting switch): each is a faithful extraction of one surface's entrance\n * math, so migrating that surface to call it is provably byte-identical. A\n * surface whose transform doesn't reduce to one of these stays bespoke.\n *\n * Pure: the caller samples the frame and passes scalars in (no `useCurrentFrame`).\n */\n\n/**\n * `word-pop` (Captions): cubic-eased opacity + spring scale-settle, per word.\n * `restScale` is the pre-settle scale (Captions uses 0.86 emphasis / 0.92 plain).\n */\nexport function wordPop(\n frame: number,\n fps: number,\n startFrame: number,\n durationFrames: number,\n restScale: number,\n): { opacity: number; scale: number } {\n const opacity = interpolate(frame, [startFrame, startFrame + durationFrames], [0, 1], {\n extrapolateLeft: 'clamp',\n extrapolateRight: 'clamp',\n easing: Easing.out(Easing.cubic),\n });\n const settle = spring({ frame, fps, delay: startFrame, config: { stiffness: 220, damping: 26, mass: 0.9 } });\n return { opacity, scale: interpolate(settle, [0, 1], [restScale, 1]) };\n}\n\n/**\n * `fade` (HeroText): per-word reveal fraction 0→1 over `windowMs`, from the\n * word's `revealAtMs`. The caller applies `opacity = k` and\n * `translateY((1 - k) * 0.25em)` while `k < 1`.\n */\nexport function fadeProgress(tMs: number, revealAtMs: number, windowMs: number): number {\n return Math.max(0, Math.min(1, (tMs - revealAtMs) / windowMs));\n}\n\n/**\n * `stagger-up` (staggered-fade-up): per-word opacity 0→1 + translateY\n * `distance`px→0 over `windowFrames`, staggered by `index * staggerDelay`.\n */\nexport function staggerUp(\n frame: number,\n index: number,\n staggerDelay: number,\n windowFrames: number,\n distance: number,\n): { opacity: number; y: number } {\n const local = frame - index * staggerDelay;\n const opacity = interpolate(local, [0, windowFrames], [0, 1], { extrapolateLeft: 'clamp', extrapolateRight: 'clamp' });\n const y = interpolate(local, [0, windowFrames], [distance, 0], { extrapolateLeft: 'clamp', extrapolateRight: 'clamp' });\n return { opacity, y };\n}\n\n/**\n * `stagger-up` vertical-rise companion to {@link staggerUp}: a word rises from\n * `distance`px to 0 as `progress` (the same 0→1 reveal `staggerUp` returns as\n * `opacity`) eases in: `distance * (1 - ease(progress))`.\n *\n * Division-free on purpose. The schema permits `distance: 0` (`.min(0)`); the\n * earlier `distance - ease(1 - y / distance) * distance` form divided by\n * `distance`, so a 0-distance render computed 0/0 = NaN → `translateY(NaNpx)`.\n * This form collapses cleanly to 0 at distance 0 and is byte-identical for\n * distance > 0 (the old `y` satisfied `y = distance * (1 - progress)`, so\n * `1 - y/distance === progress`).\n */\nexport function staggerRise(distance: number, progress: number, ease: (t: number) => number): number {\n return distance * (1 - ease(progress));\n}\n\n/**\n * Map a brand `motion.easing` keyword to a Remotion easing function for the\n * `interpolate({ easing })` option. This is the bind target for\n * `$brand:motion.easing` on the text family: the brand cascade resolves the\n * keyword string into the surface's `easing` param, and the surface applies the\n * returned curve to its per-word reveal.\n *\n * The keywords mirror the brand `EasingValue` STRING form. The object\n * (cubic-bezier) form never reaches here — the brand-cascade `resolveTokenValue`\n * only materializes string values, so an object easing misses and the binding\n * falls to its keyword fallback. Unknown / absent → `linear` (the identity\n * curve), so an unset easing is a no-op and existing renders are unchanged.\n */\nexport function resolveEasing(name?: string): (t: number) => number {\n switch (name) {\n case 'ease':\n return Easing.bezier(0.25, 0.1, 0.25, 1);\n case 'ease-in':\n return Easing.bezier(0.42, 0, 1, 1);\n case 'ease-out':\n return Easing.bezier(0, 0, 0.58, 1);\n case 'ease-in-out':\n return Easing.bezier(0.42, 0, 0.58, 1);\n case 'linear':\n default:\n return (t) => t;\n }\n}\n"],"mappings":";AAAA,SAAS,aAAa,QAAQ,cAAc;AAerC,SAAS,QACd,OACA,KACA,YACA,gBACA,WACoC;AACpC,QAAM,UAAU,YAAY,OAAO,CAAC,YAAY,aAAa,cAAc,GAAG,CAAC,GAAG,CAAC,GAAG;AAAA,IACpF,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,IAClB,QAAQ,OAAO,IAAI,OAAO,KAAK;AAAA,EACjC,CAAC;AACD,QAAM,SAAS,OAAO,EAAE,OAAO,KAAK,OAAO,YAAY,QAAQ,EAAE,WAAW,KAAK,SAAS,IAAI,MAAM,IAAI,EAAE,CAAC;AAC3G,SAAO,EAAE,SAAS,OAAO,YAAY,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,EAAE;AACvE;AAOO,SAAS,aAAa,KAAa,YAAoB,UAA0B;AACtF,SAAO,KAAK,IAAI,GAAG,KAAK,IAAI,IAAI,MAAM,cAAc,QAAQ,CAAC;AAC/D;AAMO,SAAS,UACd,OACA,OACA,cACA,cACA,UACgC;AAChC,QAAM,QAAQ,QAAQ,QAAQ;AAC9B,QAAM,UAAU,YAAY,OAAO,CAAC,GAAG,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,iBAAiB,SAAS,kBAAkB,QAAQ,CAAC;AACrH,QAAM,IAAI,YAAY,OAAO,CAAC,GAAG,YAAY,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,iBAAiB,SAAS,kBAAkB,QAAQ,CAAC;AACtH,SAAO,EAAE,SAAS,EAAE;AACtB;AAcO,SAAS,YAAY,UAAkB,UAAkB,MAAqC;AACnG,SAAO,YAAY,IAAI,KAAK,QAAQ;AACtC;AAeO,SAAS,cAAc,MAAsC;AAClE,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO,OAAO,OAAO,MAAM,KAAK,MAAM,CAAC;AAAA,IACzC,KAAK;AACH,aAAO,OAAO,OAAO,MAAM,GAAG,GAAG,CAAC;AAAA,IACpC,KAAK;AACH,aAAO,OAAO,OAAO,GAAG,GAAG,MAAM,CAAC;AAAA,IACpC,KAAK;AACH,aAAO,OAAO,OAAO,MAAM,GAAG,MAAM,CAAC;AAAA,IACvC,KAAK;AAAA,IACL;AACE,aAAO,CAAC,MAAM;AAAA,EAClB;AACF;","names":[]}
|