dsh-drawai 0.4.2 → 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (366) hide show
  1. package/README.md +4 -3
  2. package/lib/index.js +7777 -7719
  3. package/lib/motion/asset-pack.js +394 -394
  4. package/lib/motion/assets.js +291 -291
  5. package/lib/motion/demo-assets-lock.js +10 -10
  6. package/lib/motion/mgstyles/vendor/README.md +28 -28
  7. package/lib/motion/mgstyles/vendor/modules/d3/LICENSE +13 -13
  8. package/lib/motion/mgstyles/vendor/modules/d3/dist/d3.min.js +2 -2
  9. package/lib/motion/mgstyles/vendor/modules/opentype.js/LICENSE +20 -20
  10. package/lib/motion/mgstyles/vendor/modules/opentype.js/dist/opentype.mjs +14460 -14460
  11. package/lib/motion/mgstyles/vendor/modules/simplex-noise/LICENSE +21 -21
  12. package/lib/motion/mgstyles/vendor/modules/simplex-noise/dist/esm/simplex-noise.js +465 -465
  13. package/lib/motion/mgstyles/vendor/modules/topojson-client/LICENSE +13 -13
  14. package/lib/motion/mgstyles/vendor/modules/topojson-client/dist/topojson-client.min.js +2 -2
  15. package/lib/motion/render.js +179 -179
  16. package/lib/motion/shotcraft/upstream/SKILL.md +286 -286
  17. package/lib/motion/shotcraft/upstream/assets/lib/Caption.tsx +54 -54
  18. package/lib/motion/shotcraft/upstream/assets/lib/ClipCard.tsx +200 -200
  19. package/lib/motion/shotcraft/upstream/assets/lib/DigitRoll.tsx +45 -45
  20. package/lib/motion/shotcraft/upstream/assets/lib/FlashCut.tsx +20 -20
  21. package/lib/motion/shotcraft/upstream/assets/lib/FlatPanel.tsx +65 -65
  22. package/lib/motion/shotcraft/upstream/assets/lib/PageCam.tsx +151 -151
  23. package/lib/motion/shotcraft/upstream/assets/lib/VerticalTicker.tsx +129 -129
  24. package/lib/motion/shotcraft/upstream/assets/lib/helpers/camera.tsx +75 -75
  25. package/lib/motion/shotcraft/upstream/assets/lib/helpers/motion.ts +40 -40
  26. package/lib/motion/shotcraft/upstream/assets/lib/helpers/rand.ts +11 -11
  27. package/lib/motion/shotcraft/upstream/assets/lib/helpers/shake.ts +10 -10
  28. package/lib/motion/shotcraft/upstream/assets/scripts/build-readme-cover.mjs +49 -49
  29. package/lib/motion/shotcraft/upstream/assets/scripts/capture-template.mjs +210 -210
  30. package/lib/motion/shotcraft/upstream/assets/scripts/sfx-source.py +423 -423
  31. package/lib/motion/shotcraft/upstream/assets/scripts/smoke-render-demos.py +170 -170
  32. package/lib/motion/shotcraft/upstream/assets/scripts/test_sfx_source.py +157 -157
  33. package/lib/motion/shotcraft/upstream/demos/README.md +120 -120
  34. package/lib/motion/shotcraft/upstream/demos/_fixtures/Brand.tsx +112 -112
  35. package/lib/motion/shotcraft/upstream/demos/_fixtures/Fixtures.tsx +647 -647
  36. package/lib/motion/shotcraft/upstream/demos/_fixtures/Look.tsx +316 -316
  37. package/lib/motion/shotcraft/upstream/demos/_fixtures/Motion.tsx +82 -82
  38. package/lib/motion/shotcraft/upstream/demos/_fixtures/PageCam2D.tsx +115 -115
  39. package/lib/motion/shotcraft/upstream/demos/_fixtures/Polish.tsx +243 -243
  40. package/lib/motion/shotcraft/upstream/demos/_textures/live-layout.json +388 -388
  41. package/lib/motion/shotcraft/upstream/demos/camera/basic-3d-scene/Basic3DScene.tsx +250 -250
  42. package/lib/motion/shotcraft/upstream/demos/camera/crash-zoom-punch/CrashImpactReal.tsx +305 -305
  43. package/lib/motion/shotcraft/upstream/demos/camera/crash-zoom-punch/CrashZoomReal.tsx +246 -246
  44. package/lib/motion/shotcraft/upstream/demos/camera/cursor-flyover/CursorFlyover.tsx +390 -390
  45. package/lib/motion/shotcraft/upstream/demos/camera/depth-layer-moves/MultiplaneReal.tsx +138 -138
  46. package/lib/motion/shotcraft/upstream/demos/camera/graze-face-tour/GrazeFaceTour.tsx +542 -542
  47. package/lib/motion/shotcraft/upstream/demos/camera/overhead-camera-moves/OverheadTabletopDrop.tsx +315 -315
  48. package/lib/motion/shotcraft/upstream/demos/camera/overhead-camera-moves/TiltReveal.tsx +299 -299
  49. package/lib/motion/shotcraft/upstream/demos/camera/space-camera-moves/DroneDiveLanding.tsx +173 -173
  50. package/lib/motion/shotcraft/upstream/demos/camera/space-camera-moves/ExplodedView.tsx +348 -348
  51. package/lib/motion/shotcraft/upstream/demos/camera/steep-tilt-glide/SteepTiltGlide.tsx +366 -366
  52. package/lib/motion/shotcraft/upstream/demos/camera/tension-camera-moves/BulletTimeFreezeOrbit.tsx +279 -279
  53. package/lib/motion/shotcraft/upstream/demos/camera/tension-camera-moves/PullBackIsolation.tsx +184 -184
  54. package/lib/motion/shotcraft/upstream/demos/camera/terminal-3d/Terminal3D.tsx +390 -390
  55. package/lib/motion/shotcraft/upstream/demos/data/before-after-slider-scrub/BeforeAfterSliderScrub.tsx +155 -155
  56. package/lib/motion/shotcraft/upstream/demos/data/chart-live-moves/AxisRescaleShockV2.tsx +303 -303
  57. package/lib/motion/shotcraft/upstream/demos/data/chart-live-moves/OscilloscopeStreamV2.tsx +290 -290
  58. package/lib/motion/shotcraft/upstream/demos/data/chart-live-moves/UnitDotSwarmRegroupV2.tsx +278 -278
  59. package/lib/motion/shotcraft/upstream/demos/data/gauge-readout-moves/NeedleSweepSelftest.tsx +307 -307
  60. package/lib/motion/shotcraft/upstream/demos/data/gauge-readout-moves/TapeScrollFixedPointer.tsx +215 -215
  61. package/lib/motion/shotcraft/upstream/demos/data/scroll-brake-moves/BrakeReticleLock.tsx +299 -299
  62. package/lib/motion/shotcraft/upstream/demos/data/scroll-brake-moves/ChangelogScrollBrake.tsx +232 -232
  63. package/lib/motion/shotcraft/upstream/demos/data/timeline-travel/TimelineTravel.tsx +290 -290
  64. package/lib/motion/shotcraft/upstream/demos/effects/assemble-then-type-flyin/AssembleThenTypeFlyin.tsx +273 -273
  65. package/lib/motion/shotcraft/upstream/demos/effects/aurora-bloom-bg-flip/AuroraBloomBgFlip.tsx +167 -167
  66. package/lib/motion/shotcraft/upstream/demos/effects/brand-frame-snap/BrandFrameSnap.tsx +536 -536
  67. package/lib/motion/shotcraft/upstream/demos/effects/fui-hud-moves/ReticleLockOn.tsx +164 -164
  68. package/lib/motion/shotcraft/upstream/demos/effects/glow-flyline-moves/FlylineArc.tsx +175 -175
  69. package/lib/motion/shotcraft/upstream/demos/effects/glow-flyline-moves/GlowOrbAmbient.tsx +197 -197
  70. package/lib/motion/shotcraft/upstream/demos/effects/glow-flyline-moves/OrbFlylineRelay.tsx +241 -241
  71. package/lib/motion/shotcraft/upstream/demos/effects/icon-performance-moves/AttentionBounce.tsx +279 -279
  72. package/lib/motion/shotcraft/upstream/demos/effects/impact-feedback/AnimeImpact.tsx +230 -230
  73. package/lib/motion/shotcraft/upstream/demos/effects/impact-feedback/HitCounter.tsx +345 -345
  74. package/lib/motion/shotcraft/upstream/demos/effects/light-play-moves/SheenSweepRetry.tsx +275 -275
  75. package/lib/motion/shotcraft/upstream/demos/effects/light-play-moves/SpotlightSweepReveal.tsx +229 -229
  76. package/lib/motion/shotcraft/upstream/demos/effects/radial-ripple-phone-chips/RadialRipplePhoneChips.tsx +312 -312
  77. package/lib/motion/shotcraft/upstream/demos/effects/riso-print-hits/RisoMisregistrationHit.tsx +222 -222
  78. package/lib/motion/shotcraft/upstream/demos/effects/scan-bracket-sweep/ScanBracketSweep.tsx +295 -295
  79. package/lib/motion/shotcraft/upstream/demos/effects/scanline-annotate-focus/ScanlineAnnotateFocus.tsx +329 -329
  80. package/lib/motion/shotcraft/upstream/demos/effects/scanline-assemble-flyin/ScanlineAssembleFlyin.tsx +315 -315
  81. package/lib/motion/shotcraft/upstream/demos/effects/slam-entrance-moves/ImpactBurstKit.tsx +264 -264
  82. package/lib/motion/shotcraft/upstream/demos/effects/slam-entrance-moves/KanadaPerspectiveSnap.tsx +260 -260
  83. package/lib/motion/shotcraft/upstream/demos/effects/slam-entrance-moves/ScoreSlam.tsx +263 -263
  84. package/lib/motion/shotcraft/upstream/demos/effects/spotlight-sweep-moves/CornerSpotlightReveal.tsx +123 -123
  85. package/lib/motion/shotcraft/upstream/demos/effects/spotlight-sweep-moves/GlowWakeSleepPanel.tsx +187 -187
  86. package/lib/motion/shotcraft/upstream/demos/effects/spotlight-sweep-moves/SlideSpotlightPan.tsx +175 -175
  87. package/lib/motion/shotcraft/upstream/demos/interaction/autolayout-gap-dial/AutolayoutGapDial.tsx +305 -305
  88. package/lib/motion/shotcraft/upstream/demos/interaction/canvas-materialize-moves/DiagramCascadeBuild.tsx +350 -350
  89. package/lib/motion/shotcraft/upstream/demos/interaction/canvas-materialize-moves/PanelToCanvasMaterialize.tsx +352 -352
  90. package/lib/motion/shotcraft/upstream/demos/interaction/chip-grid-single-select-blackout/ChipGridSingleSelectBlackout.tsx +218 -218
  91. package/lib/motion/shotcraft/upstream/demos/interaction/collab-cursor-moves/CursorCastEnsemble.tsx +297 -297
  92. package/lib/motion/shotcraft/upstream/demos/interaction/glass-pill-dictation-typing/GlassPillDictationTyping.tsx +157 -157
  93. package/lib/motion/shotcraft/upstream/demos/interaction/hashtag-to-pill-materialize/HashtagToPillMaterialize.tsx +218 -218
  94. package/lib/motion/shotcraft/upstream/demos/interaction/picker-carousel-feature-cycle/PickerCarouselFeatureCycle.tsx +202 -202
  95. package/lib/motion/shotcraft/upstream/demos/interaction/segmented-thumb-hero/SegmentedThumbHero.tsx +265 -265
  96. package/lib/motion/shotcraft/upstream/demos/interaction/theme-switch-moves/PaletteThemeRipple.tsx +457 -457
  97. package/lib/motion/shotcraft/upstream/demos/interaction/theme-switch-moves/ThemeSweepToggle.tsx +446 -446
  98. package/lib/motion/shotcraft/upstream/demos/interaction/type-and-filter/TypeAndFilter.tsx +249 -249
  99. package/lib/motion/shotcraft/upstream/demos/interaction/voice-waveform-live/VoiceWaveformLive.tsx +278 -278
  100. package/lib/motion/shotcraft/upstream/demos/opening/crane-rise-reveal/CraneRiseReveal.tsx +332 -332
  101. package/lib/motion/shotcraft/upstream/demos/opening/dataviz-landscape-open/DatavizLandscapeOpen.tsx +358 -358
  102. package/lib/motion/shotcraft/upstream/demos/opening/fracture/Fracture.tsx +201 -201
  103. package/lib/motion/shotcraft/upstream/demos/opening/icon-field-colorize/IconFieldColorize.tsx +200 -200
  104. package/lib/motion/shotcraft/upstream/demos/opening/letterspace-materialize/LetterspaceMaterialize.tsx +208 -208
  105. package/lib/motion/shotcraft/upstream/demos/opening/magician-card-flourish/MagicianCardFlourish.tsx +341 -341
  106. package/lib/motion/shotcraft/upstream/demos/opening/orbit-ring-title-open/OrbitRingTitleOpen.tsx +389 -389
  107. package/lib/motion/shotcraft/upstream/demos/opening/spotlight-hero-card/SpotlightHeroCard.tsx +293 -293
  108. package/lib/motion/shotcraft/upstream/demos/opening/stroke-segment-build/StrokeSegmentBuild.tsx +183 -183
  109. package/lib/motion/shotcraft/upstream/demos/opening/text-as-mask/TextAsMask.tsx +245 -245
  110. package/lib/motion/shotcraft/upstream/demos/outro/grain-dissolve/GrainDissolve.tsx +222 -222
  111. package/lib/motion/shotcraft/upstream/demos/outro/logo-shrink-wordmark-lockup/LogoShrinkWordmarkLockup.tsx +223 -223
  112. package/lib/motion/shotcraft/upstream/demos/outro/neon-triple-marquee/NeonTripleMarquee.tsx +217 -217
  113. package/lib/motion/shotcraft/upstream/demos/outro/outro-group-photo-launch/OutroGroupPhotoLaunch.tsx +343 -343
  114. package/lib/motion/shotcraft/upstream/demos/outro/ui-strip-away-outro/UiStripAwayOutro.tsx +357 -357
  115. package/lib/motion/shotcraft/upstream/demos/outro/ui-to-brand-morph/IconFlipBloomLogo.tsx +187 -187
  116. package/lib/motion/shotcraft/upstream/demos/outro/ui-to-brand-morph/InputMorphsIntoLogo.tsx +333 -333
  117. package/lib/motion/shotcraft/upstream/demos/rhythm/beat-cut-moves/PaparazziFlash.tsx +274 -274
  118. package/lib/motion/shotcraft/upstream/demos/rhythm/beat-step-list-theme-cycle/BeatStepListThemeCycle.tsx +270 -270
  119. package/lib/motion/shotcraft/upstream/demos/rhythm/panel-grid-moves/ComicPanelSplit.tsx +430 -430
  120. package/lib/motion/shotcraft/upstream/demos/rhythm/quad-split-parallel-scenes/QuadSplitParallelScenes.tsx +252 -252
  121. package/lib/motion/shotcraft/upstream/demos/rhythm/rhythm-interrupt-moves/JumpCutPunchIn.tsx +106 -106
  122. package/lib/motion/shotcraft/upstream/demos/rhythm/sakuga-timing-shift/SakugaTimingShift.tsx +288 -288
  123. package/lib/motion/shotcraft/upstream/demos/rhythm/speed-ramp-freeze/FreezeAnnotateReal.tsx +362 -362
  124. package/lib/motion/shotcraft/upstream/demos/rhythm/trailer-grammar-moves/TrailerBumper.tsx +168 -168
  125. package/lib/motion/shotcraft/upstream/demos/transition/bottom-push-stack-wipe/BottomPushStackWipe.tsx +310 -310
  126. package/lib/motion/shotcraft/upstream/demos/transition/card-flip-reveal/CardFlipReveal.tsx +261 -261
  127. package/lib/motion/shotcraft/upstream/demos/transition/card-flock-tumble/CardFlockTumble.tsx +459 -459
  128. package/lib/motion/shotcraft/upstream/demos/transition/circle-match-iris/CircleMatchIris.tsx +294 -294
  129. package/lib/motion/shotcraft/upstream/demos/transition/gradient-transition/GradientTransition.tsx +161 -161
  130. package/lib/motion/shotcraft/upstream/demos/transition/line-carry-transition/LineCarryTransition.tsx +248 -248
  131. package/lib/motion/shotcraft/upstream/demos/transition/mosaic-reframe/MosaicReframe.tsx +359 -359
  132. package/lib/motion/shotcraft/upstream/demos/transition/page-turn-transitions/BarnDoorSplit.tsx +227 -227
  133. package/lib/motion/shotcraft/upstream/demos/transition/print-texture-transitions/InkBleedReveal.tsx +162 -162
  134. package/lib/motion/shotcraft/upstream/demos/transition/shot-transitions/PortalWipeV2.tsx +248 -248
  135. package/lib/motion/shotcraft/upstream/demos/transition/shot-transitions/WhipBrakeReal.tsx +186 -186
  136. package/lib/motion/shotcraft/upstream/demos/transition/tear-streak-transitions/GlitchDisplace.tsx +355 -355
  137. package/lib/motion/shotcraft/upstream/demos/transition/transition-hidden-cut/InvisibleCut.tsx +272 -272
  138. package/lib/motion/shotcraft/upstream/demos/transition/transition-hidden-cut/LightLeakBurn.tsx +262 -262
  139. package/lib/motion/shotcraft/upstream/demos/transition/transition-hidden-cut/VersusSlam.tsx +217 -217
  140. package/lib/motion/shotcraft/upstream/demos/transition/transition-travel/LetterformZoom.tsx +285 -285
  141. package/lib/motion/shotcraft/upstream/demos/transition/white-flash-logo-simplify-cut/WhiteFlashLogoSimplifyCut.tsx +205 -205
  142. package/lib/motion/shotcraft/upstream/demos/transition/wipe-transitions/BlindsSlice.tsx +178 -178
  143. package/lib/motion/shotcraft/upstream/demos/typography/blur-slide/BlurSlide.tsx +147 -147
  144. package/lib/motion/shotcraft/upstream/demos/typography/brace-expand/BraceExpand.tsx +143 -143
  145. package/lib/motion/shotcraft/upstream/demos/typography/brand-ink-open/BrandInkOpen.tsx +134 -134
  146. package/lib/motion/shotcraft/upstream/demos/typography/countdown-arc-scatter/CountdownArcScatter.tsx +217 -217
  147. package/lib/motion/shotcraft/upstream/demos/typography/flying-words/FlyingWords.tsx +198 -198
  148. package/lib/motion/shotcraft/upstream/demos/typography/glitch-cycle/GlitchCycle.tsx +221 -221
  149. package/lib/motion/shotcraft/upstream/demos/typography/gradient-word-sweep/GradientWordSweep.tsx +312 -312
  150. package/lib/motion/shotcraft/upstream/demos/typography/lead-word-zoom-assemble/LeadWordZoomAssemble.tsx +261 -261
  151. package/lib/motion/shotcraft/upstream/demos/typography/marker-underline-title/MarkerUnderlineTitle.tsx +121 -121
  152. package/lib/motion/shotcraft/upstream/demos/typography/outline-word-fill/OutlineWordFill.tsx +153 -153
  153. package/lib/motion/shotcraft/upstream/demos/typography/paper-title-card/PaperTitleCard.tsx +179 -179
  154. package/lib/motion/shotcraft/upstream/demos/typography/pill-chip-slot-cycle-handled/PillChipSlotCycleHandled.tsx +140 -140
  155. package/lib/motion/shotcraft/upstream/demos/typography/pill-slot-cycle/PillSlotCycle.tsx +309 -309
  156. package/lib/motion/shotcraft/upstream/demos/typography/text-column-converge/TextColumnConverge.tsx +191 -191
  157. package/lib/motion/shotcraft/upstream/demos/typography/title-demote-to-label/TitleDemoteToLabel.tsx +292 -292
  158. package/lib/motion/shotcraft/upstream/demos/typography/type-assembly-moves/LetterformDriftAssembly.tsx +135 -135
  159. package/lib/motion/shotcraft/upstream/demos/typography/type-assembly-moves/SplitTextStagger.tsx +124 -124
  160. package/lib/motion/shotcraft/upstream/demos/typography/type-assembly-moves/TextOnPath.tsx +255 -255
  161. package/lib/motion/shotcraft/upstream/demos/typography/type-entrance-moves/LetterDropPhysics.tsx +173 -173
  162. package/lib/motion/shotcraft/upstream/demos/typography/type-rhythm-sync/FontWeightPump.tsx +225 -225
  163. package/lib/motion/shotcraft/upstream/demos/typography/type-rhythm-sync/KaraokeFillSync.tsx +141 -141
  164. package/lib/motion/shotcraft/upstream/demos/typography/typewriter-moves/TypewriterErrorRetype.tsx +137 -137
  165. package/lib/motion/shotcraft/upstream/demos/typography/vertical-word-roll-blur-cycle/VerticalWordRollBlurCycle.tsx +147 -147
  166. package/lib/motion/shotcraft/upstream/demos/typography/word-relay-filmstrip/WordRelayFilmstrip.tsx +409 -409
  167. package/lib/motion/shotcraft/upstream/demos/typography/word-relay-geometry/WordRelayGeometry.tsx +280 -280
  168. package/lib/motion/shotcraft/upstream/demos/ui-entrance/avatar-bracket-carousel/AvatarBracketCarousel.tsx +271 -271
  169. package/lib/motion/shotcraft/upstream/demos/ui-entrance/bezier-source-converge-merge/BezierSourceConvergeMerge.tsx +385 -385
  170. package/lib/motion/shotcraft/upstream/demos/ui-entrance/card-stack/CardStack.tsx +312 -312
  171. package/lib/motion/shotcraft/upstream/demos/ui-entrance/carousel-3d/Carousel3D.tsx +303 -303
  172. package/lib/motion/shotcraft/upstream/demos/ui-entrance/clipcard-looping/ClipCardLooping.tsx +77 -77
  173. package/lib/motion/shotcraft/upstream/demos/ui-entrance/cloner-depth-echo/ClonerDepthEcho.tsx +311 -311
  174. package/lib/motion/shotcraft/upstream/demos/ui-entrance/deck-deal-flyin/DeckDealFlyin.tsx +307 -307
  175. package/lib/motion/shotcraft/upstream/demos/ui-entrance/doc-park-left-pill-deal/DocParkLeftPillDeal.tsx +349 -349
  176. package/lib/motion/shotcraft/upstream/demos/ui-entrance/document-typewriter-reveal/DocumentTypewriterReveal.tsx +255 -255
  177. package/lib/motion/shotcraft/upstream/demos/ui-entrance/draw-svg-trace/DrawSvgTrace.tsx +244 -244
  178. package/lib/motion/shotcraft/upstream/demos/ui-entrance/element-body-moves/ContactShadowLift.tsx +217 -217
  179. package/lib/motion/shotcraft/upstream/demos/ui-entrance/integration-hub-map/IntegrationHubMap.tsx +652 -652
  180. package/lib/motion/shotcraft/upstream/demos/ui-entrance/list-reveal/ListReveal.tsx +153 -153
  181. package/lib/motion/shotcraft/upstream/demos/ui-entrance/list-stack-press/ListStackPress.tsx +238 -238
  182. package/lib/motion/shotcraft/upstream/demos/ui-entrance/neon-frame-forerun/NeonFrameForerun.tsx +324 -324
  183. package/lib/motion/shotcraft/upstream/demos/ui-entrance/neon-frame-orbit-drop/NeonFrameForerunOrbit.tsx +354 -354
  184. package/lib/motion/shotcraft/upstream/demos/ui-entrance/page-waterfall-wall/PageWaterfallWall.tsx +101 -101
  185. package/lib/motion/shotcraft/upstream/demos/ui-entrance/page-waterfall-wall/VerticalTicker.tsx +129 -129
  186. package/lib/motion/shotcraft/upstream/demos/ui-entrance/product-card-progressive-assemble/ProductCardProgressiveAssemble.tsx +297 -297
  187. package/lib/motion/shotcraft/upstream/demos/ui-entrance/radial-wave/RadialWave.tsx +57 -57
  188. package/lib/motion/shotcraft/upstream/demos/ui-entrance/research-card-stack-scroll/ResearchCardStackScroll.tsx +155 -155
  189. package/lib/motion/shotcraft/upstream/demos/ui-entrance/row-embed/RowEmbed.tsx +175 -175
  190. package/lib/motion/shotcraft/upstream/demos/ui-entrance/value-stagger-gradient/ValueStaggerGradient.tsx +153 -153
  191. package/lib/motion/shotcraft/upstream/demos/ui-entrance/wall-reveal-moves/BentoLightUp.tsx +146 -146
  192. package/lib/motion/shotcraft/upstream/demos/ui-entrance/wall-reveal-moves/WireframeDrawOn.tsx +226 -226
  193. package/lib/motion/shotcraft/upstream/gallery/api/library.json +1 -1
  194. package/lib/motion/shotcraft/upstream/references/aesthetic-rules.md +193 -193
  195. package/lib/motion/shotcraft/upstream/references/final-review.md +121 -121
  196. package/lib/motion/shotcraft/upstream/references/guided-free-creation.md +199 -199
  197. package/lib/motion/shotcraft/upstream/references/jianying-export.md +183 -183
  198. package/lib/motion/shotcraft/upstream/references/music-beat-sync.md +257 -257
  199. package/lib/motion/shotcraft/upstream/references/pipeline.md +382 -382
  200. package/lib/motion/shotcraft/upstream/references/publish-upload-post.md +111 -111
  201. package/lib/motion/shotcraft/upstream/references/sequences/promo-energy-arc.md +50 -50
  202. package/lib/motion/shotcraft/upstream/references/sfx-sourcing.md +95 -95
  203. package/lib/motion/shotcraft/upstream/references/shots/camera/basic-3d-scene.md +41 -41
  204. package/lib/motion/shotcraft/upstream/references/shots/camera/crash-zoom-punch.md +52 -52
  205. package/lib/motion/shotcraft/upstream/references/shots/camera/cursor-flyover.md +39 -39
  206. package/lib/motion/shotcraft/upstream/references/shots/camera/depth-layer-moves.md +39 -39
  207. package/lib/motion/shotcraft/upstream/references/shots/camera/graze-face-tour.md +57 -57
  208. package/lib/motion/shotcraft/upstream/references/shots/camera/overhead-camera-moves.md +51 -51
  209. package/lib/motion/shotcraft/upstream/references/shots/camera/space-camera-moves.md +46 -46
  210. package/lib/motion/shotcraft/upstream/references/shots/camera/steep-tilt-glide.md +52 -52
  211. package/lib/motion/shotcraft/upstream/references/shots/camera/tension-camera-moves.md +43 -43
  212. package/lib/motion/shotcraft/upstream/references/shots/camera/terminal-3d.md +42 -42
  213. package/lib/motion/shotcraft/upstream/references/shots/data/before-after-slider-scrub.md +48 -48
  214. package/lib/motion/shotcraft/upstream/references/shots/data/chart-live-moves.md +52 -52
  215. package/lib/motion/shotcraft/upstream/references/shots/data/gauge-readout-moves.md +45 -45
  216. package/lib/motion/shotcraft/upstream/references/shots/data/scroll-brake-moves.md +46 -46
  217. package/lib/motion/shotcraft/upstream/references/shots/data/timeline-travel.md +44 -44
  218. package/lib/motion/shotcraft/upstream/references/shots/effects/assemble-then-type-flyin.md +63 -63
  219. package/lib/motion/shotcraft/upstream/references/shots/effects/aurora-bloom-bg-flip.md +54 -54
  220. package/lib/motion/shotcraft/upstream/references/shots/effects/brand-frame-snap.md +58 -58
  221. package/lib/motion/shotcraft/upstream/references/shots/effects/fui-hud-moves.md +35 -35
  222. package/lib/motion/shotcraft/upstream/references/shots/effects/glow-flyline-moves.md +53 -53
  223. package/lib/motion/shotcraft/upstream/references/shots/effects/icon-performance-moves.md +42 -42
  224. package/lib/motion/shotcraft/upstream/references/shots/effects/impact-feedback.md +50 -50
  225. package/lib/motion/shotcraft/upstream/references/shots/effects/light-play-moves.md +46 -46
  226. package/lib/motion/shotcraft/upstream/references/shots/effects/radial-ripple-phone-chips.md +56 -56
  227. package/lib/motion/shotcraft/upstream/references/shots/effects/riso-print-hits.md +49 -49
  228. package/lib/motion/shotcraft/upstream/references/shots/effects/scan-bracket-sweep.md +50 -50
  229. package/lib/motion/shotcraft/upstream/references/shots/effects/scanline-annotate-focus.md +53 -53
  230. package/lib/motion/shotcraft/upstream/references/shots/effects/scanline-assemble-flyin.md +53 -53
  231. package/lib/motion/shotcraft/upstream/references/shots/effects/slam-entrance-moves.md +55 -55
  232. package/lib/motion/shotcraft/upstream/references/shots/effects/spotlight-sweep-moves.md +52 -52
  233. package/lib/motion/shotcraft/upstream/references/shots/interaction/autolayout-gap-dial.md +60 -60
  234. package/lib/motion/shotcraft/upstream/references/shots/interaction/canvas-materialize-moves.md +57 -57
  235. package/lib/motion/shotcraft/upstream/references/shots/interaction/chip-grid-single-select-blackout.md +51 -51
  236. package/lib/motion/shotcraft/upstream/references/shots/interaction/collab-cursor-moves.md +41 -41
  237. package/lib/motion/shotcraft/upstream/references/shots/interaction/glass-pill-dictation-typing.md +53 -53
  238. package/lib/motion/shotcraft/upstream/references/shots/interaction/hashtag-to-pill-materialize.md +60 -60
  239. package/lib/motion/shotcraft/upstream/references/shots/interaction/picker-carousel-feature-cycle.md +55 -55
  240. package/lib/motion/shotcraft/upstream/references/shots/interaction/segmented-thumb-hero.md +57 -57
  241. package/lib/motion/shotcraft/upstream/references/shots/interaction/theme-switch-moves.md +47 -47
  242. package/lib/motion/shotcraft/upstream/references/shots/interaction/type-and-filter.md +37 -37
  243. package/lib/motion/shotcraft/upstream/references/shots/interaction/voice-waveform-live.md +54 -54
  244. package/lib/motion/shotcraft/upstream/references/shots/opening/brand-ink-open.md +36 -36
  245. package/lib/motion/shotcraft/upstream/references/shots/opening/crane-rise-reveal.md +56 -56
  246. package/lib/motion/shotcraft/upstream/references/shots/opening/dataviz-landscape-open.md +56 -56
  247. package/lib/motion/shotcraft/upstream/references/shots/opening/fracture.md +40 -40
  248. package/lib/motion/shotcraft/upstream/references/shots/opening/icon-field-colorize.md +60 -60
  249. package/lib/motion/shotcraft/upstream/references/shots/opening/letterspace-materialize.md +57 -57
  250. package/lib/motion/shotcraft/upstream/references/shots/opening/magician-card-flourish.md +73 -73
  251. package/lib/motion/shotcraft/upstream/references/shots/opening/orbit-ring-title-open.md +87 -87
  252. package/lib/motion/shotcraft/upstream/references/shots/opening/spotlight-hero-card.md +55 -55
  253. package/lib/motion/shotcraft/upstream/references/shots/opening/stroke-segment-build.md +50 -50
  254. package/lib/motion/shotcraft/upstream/references/shots/opening/text-as-mask.md +59 -59
  255. package/lib/motion/shotcraft/upstream/references/shots/outro/grain-dissolve.md +38 -38
  256. package/lib/motion/shotcraft/upstream/references/shots/outro/logo-shrink-wordmark-lockup.md +38 -38
  257. package/lib/motion/shotcraft/upstream/references/shots/outro/neon-triple-marquee.md +59 -59
  258. package/lib/motion/shotcraft/upstream/references/shots/outro/outro-group-photo-launch.md +39 -39
  259. package/lib/motion/shotcraft/upstream/references/shots/outro/ui-strip-away-outro.md +61 -61
  260. package/lib/motion/shotcraft/upstream/references/shots/outro/ui-to-brand-morph.md +52 -52
  261. package/lib/motion/shotcraft/upstream/references/shots/rhythm/beat-cut-moves.md +50 -50
  262. package/lib/motion/shotcraft/upstream/references/shots/rhythm/beat-step-list-theme-cycle.md +66 -66
  263. package/lib/motion/shotcraft/upstream/references/shots/rhythm/panel-grid-moves.md +43 -43
  264. package/lib/motion/shotcraft/upstream/references/shots/rhythm/quad-split-parallel-scenes.md +38 -38
  265. package/lib/motion/shotcraft/upstream/references/shots/rhythm/rhythm-interrupt-moves.md +38 -38
  266. package/lib/motion/shotcraft/upstream/references/shots/rhythm/sakuga-timing-shift.md +56 -56
  267. package/lib/motion/shotcraft/upstream/references/shots/rhythm/speed-ramp-freeze.md +44 -44
  268. package/lib/motion/shotcraft/upstream/references/shots/rhythm/trailer-grammar-moves.md +38 -38
  269. package/lib/motion/shotcraft/upstream/references/shots/transition/bottom-push-stack-wipe.md +63 -63
  270. package/lib/motion/shotcraft/upstream/references/shots/transition/card-flip-reveal.md +57 -57
  271. package/lib/motion/shotcraft/upstream/references/shots/transition/card-flock-tumble.md +63 -63
  272. package/lib/motion/shotcraft/upstream/references/shots/transition/circle-match-iris.md +58 -58
  273. package/lib/motion/shotcraft/upstream/references/shots/transition/gradient-transition.md +45 -45
  274. package/lib/motion/shotcraft/upstream/references/shots/transition/line-carry-transition.md +55 -55
  275. package/lib/motion/shotcraft/upstream/references/shots/transition/mosaic-reframe.md +49 -49
  276. package/lib/motion/shotcraft/upstream/references/shots/transition/page-turn-transitions.md +42 -42
  277. package/lib/motion/shotcraft/upstream/references/shots/transition/print-texture-transitions.md +42 -42
  278. package/lib/motion/shotcraft/upstream/references/shots/transition/shot-transitions.md +45 -45
  279. package/lib/motion/shotcraft/upstream/references/shots/transition/tear-streak-transitions.md +48 -48
  280. package/lib/motion/shotcraft/upstream/references/shots/transition/transition-hidden-cut.md +55 -55
  281. package/lib/motion/shotcraft/upstream/references/shots/transition/transition-travel.md +43 -43
  282. package/lib/motion/shotcraft/upstream/references/shots/transition/white-flash-logo-simplify-cut.md +41 -41
  283. package/lib/motion/shotcraft/upstream/references/shots/transition/wipe-transitions.md +42 -42
  284. package/lib/motion/shotcraft/upstream/references/shots/typography/blur-slide.md +59 -59
  285. package/lib/motion/shotcraft/upstream/references/shots/typography/brace-expand.md +55 -55
  286. package/lib/motion/shotcraft/upstream/references/shots/typography/countdown-arc-scatter.md +65 -65
  287. package/lib/motion/shotcraft/upstream/references/shots/typography/document-typewriter-reveal.md +42 -42
  288. package/lib/motion/shotcraft/upstream/references/shots/typography/flying-words.md +64 -64
  289. package/lib/motion/shotcraft/upstream/references/shots/typography/glitch-cycle.md +64 -64
  290. package/lib/motion/shotcraft/upstream/references/shots/typography/gradient-word-sweep.md +54 -54
  291. package/lib/motion/shotcraft/upstream/references/shots/typography/lead-word-zoom-assemble.md +91 -91
  292. package/lib/motion/shotcraft/upstream/references/shots/typography/marker-underline-title.md +51 -51
  293. package/lib/motion/shotcraft/upstream/references/shots/typography/outline-word-fill.md +66 -66
  294. package/lib/motion/shotcraft/upstream/references/shots/typography/paper-title-card.md +38 -38
  295. package/lib/motion/shotcraft/upstream/references/shots/typography/pill-chip-slot-cycle-handled.md +66 -66
  296. package/lib/motion/shotcraft/upstream/references/shots/typography/pill-slot-cycle.md +58 -58
  297. package/lib/motion/shotcraft/upstream/references/shots/typography/text-column-converge.md +61 -61
  298. package/lib/motion/shotcraft/upstream/references/shots/typography/title-demote-to-label.md +64 -64
  299. package/lib/motion/shotcraft/upstream/references/shots/typography/type-assembly-moves.md +45 -45
  300. package/lib/motion/shotcraft/upstream/references/shots/typography/type-entrance-moves.md +41 -41
  301. package/lib/motion/shotcraft/upstream/references/shots/typography/type-rhythm-sync.md +51 -51
  302. package/lib/motion/shotcraft/upstream/references/shots/typography/typewriter-moves.md +42 -42
  303. package/lib/motion/shotcraft/upstream/references/shots/typography/vertical-word-roll-blur-cycle.md +63 -63
  304. package/lib/motion/shotcraft/upstream/references/shots/typography/word-relay-filmstrip.md +57 -57
  305. package/lib/motion/shotcraft/upstream/references/shots/typography/word-relay-geometry.md +75 -75
  306. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/avatar-bracket-carousel.md +59 -59
  307. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/bezier-source-converge-merge.md +67 -67
  308. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/card-stack.md +60 -60
  309. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/carousel-3d.md +66 -66
  310. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/cloner-depth-echo.md +40 -40
  311. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/deck-deal-flyin.md +45 -45
  312. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/doc-park-left-pill-deal.md +62 -62
  313. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/draw-svg-trace.md +55 -55
  314. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/element-body-moves.md +37 -37
  315. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/integration-hub-map.md +55 -55
  316. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/list-reveal.md +50 -50
  317. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/list-stack-press.md +43 -43
  318. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/neon-frame-forerun.md +55 -55
  319. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/neon-frame-orbit-drop.md +51 -51
  320. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/page-waterfall-wall.md +51 -51
  321. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/product-card-progressive-assemble.md +56 -56
  322. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/radial-wave.md +49 -49
  323. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/research-card-stack-scroll.md +57 -57
  324. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/row-embed.md +36 -36
  325. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/value-stagger-gradient.md +64 -64
  326. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/wall-reveal-moves.md +47 -47
  327. package/lib/motion/shotcraft/upstream/references/sound-design.md +170 -170
  328. package/lib/motion/shotcraft/upstream/references/workbench.md +157 -157
  329. package/lib/motion/shotcraft/upstream/template/TEMPLATE.md +103 -103
  330. package/lib/motion/shotcraft/upstream/template/THEMES.md +44 -44
  331. package/lib/motion/shotcraft/upstream/template/package.json +20 -20
  332. package/lib/motion/shotcraft/upstream/template/remotion.config.ts +6 -6
  333. package/lib/motion/shotcraft/upstream/template/src/Root.tsx +17 -17
  334. package/lib/motion/shotcraft/upstream/template/src/aifl/Caption.tsx +65 -65
  335. package/lib/motion/shotcraft/upstream/template/src/aifl/DigitRoll.tsx +48 -48
  336. package/lib/motion/shotcraft/upstream/template/src/aifl/FlashCut.tsx +24 -24
  337. package/lib/motion/shotcraft/upstream/template/src/aifl/Main.tsx +192 -192
  338. package/lib/motion/shotcraft/upstream/template/src/aifl/PaperTitleCard.tsx +111 -111
  339. package/lib/motion/shotcraft/upstream/template/src/aifl/live/PageCam.tsx +150 -150
  340. package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneDetail.tsx +158 -158
  341. package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneFlyIn.tsx +468 -468
  342. package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneOpen.tsx +552 -552
  343. package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneOutroLive.tsx +411 -411
  344. package/lib/motion/shotcraft/upstream/template/src/aifl/live/ScenePapers.tsx +200 -200
  345. package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneWbr.tsx +324 -324
  346. package/lib/motion/shotcraft/upstream/template/src/aifl/live-layout.json +388 -388
  347. package/lib/motion/shotcraft/upstream/template/src/index.ts +4 -4
  348. package/lib/motion/shotcraft/upstream/template/src/themes/ThemedFilm.tsx +7 -7
  349. package/lib/motion/shotcraft/upstream/template/src/themes/manifest.tsx +68 -68
  350. package/lib/motion/shotcraft/upstream/template/src/themes/palette-assets.json +1 -1
  351. package/lib/motion/shotcraft/upstream/template/src/themes/palette-assets.ts +24 -24
  352. package/lib/motion/shotcraft/upstream/template/src/themes/palettes.json +74 -74
  353. package/lib/motion/shotcraft/upstream/template/src/themes/visual-theme.tsx +91 -91
  354. package/lib/motion/shotcraft/upstream/template/src/workbench.ts +213 -213
  355. package/lib/motion/shotcraft/upstream/template/tsconfig.json +15 -15
  356. package/lib/motion/style-frames.js +306 -306
  357. package/lib/motion/sync.js +214 -214
  358. package/lib/motion-project.js +105 -105
  359. package/lib/motion-render-worker.js +174 -174
  360. package/lib/routing/router.js +222 -222
  361. package/lib/routing/vendor/README.md +96 -96
  362. package/lib/routing/vendor/libavoid-routing.js +753 -753
  363. package/lib/routing/vendor/libavoid.min.js +59 -59
  364. package/lib/video-trace-pool.js +128 -128
  365. package/package.json +1 -1
  366. package/LICENSE +0 -4175
@@ -1,312 +1,312 @@
1
- // gradient-word-sweep v3 —— 批次 12 按用户意见微调(v2 结构保留):
2
- // 1) 闪电偏紫红色 + 线宽调细(约减半);
3
- // 2) 整体泛光强度略降(各辉光层 opacity 下调);
4
- // 3) 波前尾迹梯度:刚被点亮的字符辉光最强,随扫过距离衰减到稳态
5
- // (trailing-window 增亮层,填充结束后淡出到稳态呼吸)。
6
- // 质感层(改版 v4):
7
- // a) 修"方框光":辉光层的 mask/clip 原先裁在文字盒上,模糊溢出盒外被一刀切成矩形——
8
- // 改为所有带模糊的层都放进四周外扩 PAD 的 Halo 盒里,mask 色标用 calc 换算回文字坐标;
9
- // b) 闪电从 36 次随机事件收成 7 次排期(间隔 ≥9f、同屏 ≤1 道),末次 ~92f 熄灭,尾段留呼吸;
10
- // c) 入场改两行错峰 blur-slide;整段极缓推近 1→1.025;黑底换带色相的近黑 + 暗角 + 颗粒。
11
- // 文案:充能词 Supercharged 保留(闪电与辉光按它的字宽排布),标语改成 video-shotcraft 的宣传句。
12
- import React from 'react';
13
- import { AbsoluteFill, useCurrentFrame, interpolate, Easing } from 'remotion';
14
- import { EASE, Grain, Vignette, ramp } from '../../_fixtures/Polish';
15
- import { BRAND } from '../../_fixtures/Brand';
16
-
17
- const mulberry32 = (a: number) => () => {
18
- let t = (a += 0x6d2b79f5);
19
- t = Math.imul(t ^ (t >>> 15), t | 1);
20
- t ^= t + Math.imul(t ^ (t >>> 7), t | 61);
21
- return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
22
- };
23
-
24
- const FONT = '"Avenir Next", Futura, "Helvetica Neue", sans-serif';
25
- // 截图 5:S 偏蓝青 → 中段紫 → 粉 → 尾部琥珀
26
- const GRAD = 'linear-gradient(92deg, #59c2ff 0%, #9d6bff 32%, #ff6ed4 62%, #ffc46b 100%)';
27
-
28
- export const GRADIENT_WORD_SWEEP_DURATION = 105;
29
-
30
- const FILL_START = 12;
31
- const FILL_END = 30; // 18 帧 ≈ 0.6s,快扫
32
- const LIGHT_START = FILL_END + 3;
33
-
34
- // ---------- 种子化噪声与闪电 ----------
35
- const rand = mulberry32(20260718);
36
- const FLICKER: number[] = Array.from({ length: 160 }, () => rand());
37
-
38
- type Bolt = { d: string; long: boolean };
39
- const makeLongBolt = (r: () => number): Bolt => {
40
- // 词上方勾连长弧:横跨若干字符,锯齿折线
41
- const x0 = 30 + r() * 220;
42
- const x1 = x0 + 160 + r() * 320;
43
- const yBase = 38 + r() * 42;
44
- const n = 7 + Math.floor(r() * 4);
45
- let d = `M ${x0.toFixed(1)} ${(yBase + 26 + r() * 20).toFixed(1)}`;
46
- for (let i = 1; i <= n; i++) {
47
- const x = x0 + ((x1 - x0) * i) / n + (r() - 0.5) * 22;
48
- const arch = Math.sin((i / n) * Math.PI) * -22; // 中段拱起
49
- const y = yBase + arch + (r() - 0.5) * 30 + (i === n ? 30 + r() * 18 : 0);
50
- d += ` L ${x.toFixed(1)} ${y.toFixed(1)}`;
51
- }
52
- return { d, long: true };
53
- };
54
- const makeShortBolt = (r: () => number): Bolt => {
55
- // 字符之间的短勾连:竖向小锯齿
56
- const x = 60 + r() * 540;
57
- const y0 = 72 + r() * 24;
58
- const y1 = y0 + 55 + r() * 45;
59
- const n = 4 + Math.floor(r() * 3);
60
- let d = `M ${x.toFixed(1)} ${y0.toFixed(1)}`;
61
- for (let i = 1; i <= n; i++) {
62
- const y = y0 + ((y1 - y0) * i) / n;
63
- const xx = x + (r() - 0.5) * 30;
64
- d += ` L ${xx.toFixed(1)} ${y.toFixed(1)}`;
65
- }
66
- return { d, long: false };
67
- };
68
-
69
- const BOLTS: Bolt[] = Array.from({ length: 16 }, (_, i) =>
70
- i % 3 === 0 ? makeShortBolt(rand) : makeLongBolt(rand),
71
- );
72
- // 闪烁事件:排期而非随机——稀疏零星(同屏 ≤1 道、间隔 ≥9f),末次约 92f 熄灭,留出落定呼吸
73
- type Flash = { at: number; life: number; bolt: number };
74
- const FLASH_AT = [2, 12, 22, 33, 43, 52, 56];
75
- const FLASHES: Flash[] = FLASH_AT.map((d, k) => ({
76
- at: LIGHT_START + d,
77
- life: k === FLASH_AT.length - 1 ? 3 : 3 + Math.floor(rand() * 2),
78
- bolt: (k * 5 + 1) % BOLTS.length,
79
- }));
80
-
81
- // 外扩盒:带模糊的辉光层放进四周外扩 PAD 的盒子,mask 不再把溢出的光切成矩形
82
- const PAD = 90;
83
- // 文字坐标里的百分比 x → 外扩盒里的 mask 色标
84
- const at = (x: number) => `calc(${PAD}px + (100% - ${PAD * 2}px) * ${(Math.max(-20, Math.min(120, x)) / 100).toFixed(4)})`;
85
- const Halo: React.FC<{ mask?: string; style?: React.CSSProperties; children: React.ReactNode }> = ({ mask, style, children }) => (
86
- <span
87
- aria-hidden
88
- style={{
89
- position: 'absolute',
90
- left: -PAD,
91
- top: -PAD,
92
- right: -PAD,
93
- bottom: -PAD,
94
- padding: PAD,
95
- ...(mask ? { WebkitMaskImage: mask, maskImage: mask } : {}),
96
- ...style,
97
- }}
98
- >
99
- <span style={{ position: 'relative', display: 'block', width: '100%', height: '100%' }}>{children}</span>
100
- </span>
101
- );
102
-
103
- export const GradientWordSweep: React.FC = () => {
104
- const frame = useCurrentFrame();
105
-
106
- // 入场:两行错峰 blur-slide(第二行晚 4f),同一条 snappy 进度驱动 y/blur/opacity
107
- const enter1 = ramp(frame, 0, 14, EASE.snappy);
108
- const enter2 = ramp(frame, 4, 14, EASE.snappy);
109
- const lineIn = (e: number): React.CSSProperties => ({
110
- opacity: e,
111
- transform: `translateY(${(1 - e) * 36}px)`,
112
- filter: e < 0.999 ? `blur(${((1 - e) * 10).toFixed(2)}px)` : undefined,
113
- });
114
- // 整段极缓推近(smooth,起止速度为 0)
115
- const push = 1 + 0.025 * ramp(frame, 0, 104, EASE.smooth);
116
-
117
- // 快速填充进度
118
- const p = interpolate(frame, [FILL_START, FILL_END], [0, 1], {
119
- extrapolateLeft: 'clamp',
120
- extrapolateRight: 'clamp',
121
- easing: Easing.out(Easing.quad),
122
- });
123
- const pPct = p * 100;
124
- const filling = frame >= FILL_START && frame <= FILL_END + 4;
125
- const headFade = interpolate(frame, [FILL_END, FILL_END + 6], [1, 0], {
126
- extrapolateLeft: 'clamp',
127
- extrapolateRight: 'clamp',
128
- });
129
-
130
- // 波前尾迹:刚点亮字符最亮,向后衰减;填充结束后整体淡出到稳态
131
- const trailFade = interpolate(frame, [FILL_END, FILL_END + 10], [1, 0], {
132
- extrapolateLeft: 'clamp',
133
- extrapolateRight: 'clamp',
134
- });
135
- const TRAIL = 34; // 尾迹长度(% 宽度)
136
- const trailMask =
137
- `linear-gradient(90deg, transparent 0%, transparent ${at(pPct - TRAIL)}, ` +
138
- `rgba(0,0,0,0.9) ${at(pPct - 3)}, rgba(0,0,0,0.9) ${at(pPct + 1)}, ` +
139
- `transparent ${at(pPct + 6)})`;
140
- // 填充头亮核:只露波前 ~10% 词宽,两侧软边(原 clipPath 硬裁 → 方框)
141
- const headMask =
142
- `linear-gradient(90deg, transparent 0%, transparent ${at(pPct - 12)}, #000 ${at(pPct - 6)}, ` +
143
- `#000 ${at(pPct - 1)}, transparent ${at(pPct + 2)})`;
144
-
145
- const noise = FLICKER[Math.min(frame, FLICKER.length - 1)];
146
- // 当前帧活跃闪电
147
- const active = FLASHES.filter((f) => frame >= f.at && frame < f.at + f.life);
148
- const boltBoost = active.length > 0 ? 0.35 : 0;
149
- // 辉光呼吸:填满后带噪声微闪 + 闪电时增亮
150
- const glowLvl =
151
- interpolate(frame, [FILL_START, FILL_END], [0, 1], {
152
- extrapolateLeft: 'clamp',
153
- extrapolateRight: 'clamp',
154
- }) *
155
- (0.82 + 0.18 * noise) +
156
- boltBoost;
157
-
158
- // 软边遮罩:辉光层的填充边缘不生硬
159
- const softMask = (soft: number): string | undefined =>
160
- p >= 1
161
- ? undefined
162
- : `linear-gradient(90deg, #000 0%, #000 ${at(pPct - soft)}, transparent ${at(pPct + soft * 0.6)})`;
163
-
164
- const lineStyle: React.CSSProperties = {
165
- fontFamily: FONT,
166
- fontWeight: 700,
167
- fontStyle: 'italic',
168
- fontSize: 92,
169
- letterSpacing: -1,
170
- lineHeight: 1.28,
171
- color: '#ffffff',
172
- whiteSpace: 'nowrap',
173
- };
174
-
175
- const gradText: React.CSSProperties = {
176
- position: 'absolute',
177
- inset: 0,
178
- backgroundImage: GRAD,
179
- WebkitBackgroundClip: 'text',
180
- backgroundClip: 'text',
181
- color: 'transparent',
182
- };
183
-
184
- return (
185
- <AbsoluteFill
186
- style={{
187
- background: 'radial-gradient(ellipse 70% 70% at 50% 48%, #0d0b14 0%, #07060a 60%, #040405 100%)',
188
- justifyContent: 'center',
189
- alignItems: 'center',
190
- }}
191
- >
192
- <div style={{ position: 'absolute', inset: 0, transform: `scale(${push})` }}>
193
- {/* 词后方环境泛光(大半径,随充能增强) */}
194
- <div
195
- style={{
196
- position: 'absolute',
197
- left: 500,
198
- top: 340,
199
- width: 820,
200
- height: 320,
201
- borderRadius: '50%',
202
- background:
203
- 'radial-gradient(closest-side, rgba(180,110,255,0.6), rgba(255,110,212,0.25) 55%, transparent 78%)',
204
- filter: 'blur(38px)',
205
- opacity: 0.55 * glowLvl,
206
- }}
207
- />
208
- </div>
209
- <div style={{ textAlign: 'center', transform: `scale(${push})` }}>
210
- <div style={{ ...lineStyle, ...lineIn(enter1) }}>
211
- <span style={{ position: 'relative', display: 'inline-block' }}>
212
- <span>Supercharged</span>
213
- {/* AE 式辉光:大半径柔光层(最糊) */}
214
- <Halo mask={softMask(14)} style={{ opacity: 0.55 * glowLvl }}>
215
- <span style={{ ...gradText, filter: 'blur(46px) saturate(1.6)', transform: 'scale(1.05)' }}>Supercharged</span>
216
- </Halo>
217
- {/* 中晕层 */}
218
- <Halo mask={softMask(10)} style={{ opacity: 0.62 * glowLvl }}>
219
- <span style={{ ...gradText, filter: 'blur(18px) saturate(1.4) brightness(1.15)' }}>Supercharged</span>
220
- </Halo>
221
- {/* 近核柔光 */}
222
- <Halo mask={softMask(7)} style={{ opacity: 0.72 * Math.min(1, glowLvl + 0.1) }}>
223
- <span style={{ ...gradText, filter: 'blur(6px) brightness(1.25)' }}>Supercharged</span>
224
- </Halo>
225
- {/* 清晰渐变本体(无模糊,clipPath 硬裁即渐变前沿) */}
226
- <span
227
- aria-hidden
228
- style={{
229
- ...gradText,
230
- clipPath: `inset(-25% ${100 - pPct}% -25% 0)`,
231
- }}
232
- >
233
- Supercharged
234
- </span>
235
- {/* 波前尾迹增亮:刚点亮字符辉光最强,向后衰减到稳态 */}
236
- {trailFade > 0.01 && (
237
- <Halo mask={trailMask} style={{ opacity: 0.95 * trailFade }}>
238
- <span style={{ ...gradText, filter: 'blur(9px) saturate(1.7) brightness(1.7)' }}>Supercharged</span>
239
- </Halo>
240
- )}
241
- {/* 填充头字符过曝亮核(字符形状,非独立光点;仅填充期间;软边 mask 不再出方框) */}
242
- {filling && p < 1 && (
243
- <Halo mask={headMask} style={{ opacity: 0.9 * headFade }}>
244
- <span
245
- style={{
246
- position: 'absolute',
247
- inset: 0,
248
- color: '#fff',
249
- filter: 'blur(3px)',
250
- textShadow: '0 0 22px rgba(255,255,255,0.9), 0 0 55px rgba(216,150,255,0.8)',
251
- }}
252
- >
253
- Supercharged
254
- </span>
255
- </Halo>
256
- )}
257
- {/* 勾连闪电:填充完成后,按排期在字符之间/词上方闪现 */}
258
- <svg
259
- aria-hidden
260
- viewBox="0 0 700 240"
261
- style={{
262
- position: 'absolute',
263
- left: -25,
264
- top: -62,
265
- width: 700,
266
- height: 240,
267
- overflow: 'visible',
268
- pointerEvents: 'none',
269
- }}
270
- >
271
- {active.map((f, i) => {
272
- const b = BOLTS[f.bolt];
273
- const decay = 1 - (frame - f.at) / f.life;
274
- return (
275
- <g key={`${f.at}-${i}`} opacity={Math.min(1, 1.1 * decay)}>
276
- <path
277
- d={b.d}
278
- fill="none"
279
- stroke="rgba(216,60,190,0.65)"
280
- strokeWidth={b.long ? 6 : 4.5}
281
- strokeLinejoin="miter"
282
- style={{ filter: 'blur(6px)' }}
283
- />
284
- <path
285
- d={b.d}
286
- fill="none"
287
- stroke="rgba(235,110,215,0.9)"
288
- strokeWidth={b.long ? 2.4 : 1.9}
289
- strokeLinejoin="miter"
290
- style={{ filter: 'blur(1.5px)' }}
291
- />
292
- <path
293
- d={b.d}
294
- fill="none"
295
- stroke="#ffd8f2"
296
- strokeWidth={b.long ? 1.4 : 1.1}
297
- strokeLinejoin="miter"
298
- />
299
- </g>
300
- );
301
- })}
302
- </svg>
303
- </span>{' '}
304
- <span>product films</span>
305
- </div>
306
- <div style={{ ...lineStyle, ...lineIn(enter2) }}>made with {BRAND.name}</div>
307
- </div>
308
- <Vignette strength={0.5} inner={0.45} color="#000000" />
309
- <Grain opacity={0.07} blend="soft-light" />
310
- </AbsoluteFill>
311
- );
312
- };
1
+ // gradient-word-sweep v3 —— 批次 12 按用户意见微调(v2 结构保留):
2
+ // 1) 闪电偏紫红色 + 线宽调细(约减半);
3
+ // 2) 整体泛光强度略降(各辉光层 opacity 下调);
4
+ // 3) 波前尾迹梯度:刚被点亮的字符辉光最强,随扫过距离衰减到稳态
5
+ // (trailing-window 增亮层,填充结束后淡出到稳态呼吸)。
6
+ // 质感层(改版 v4):
7
+ // a) 修"方框光":辉光层的 mask/clip 原先裁在文字盒上,模糊溢出盒外被一刀切成矩形——
8
+ // 改为所有带模糊的层都放进四周外扩 PAD 的 Halo 盒里,mask 色标用 calc 换算回文字坐标;
9
+ // b) 闪电从 36 次随机事件收成 7 次排期(间隔 ≥9f、同屏 ≤1 道),末次 ~92f 熄灭,尾段留呼吸;
10
+ // c) 入场改两行错峰 blur-slide;整段极缓推近 1→1.025;黑底换带色相的近黑 + 暗角 + 颗粒。
11
+ // 文案:充能词 Supercharged 保留(闪电与辉光按它的字宽排布),标语改成 video-shotcraft 的宣传句。
12
+ import React from 'react';
13
+ import { AbsoluteFill, useCurrentFrame, interpolate, Easing } from 'remotion';
14
+ import { EASE, Grain, Vignette, ramp } from '../../_fixtures/Polish';
15
+ import { BRAND } from '../../_fixtures/Brand';
16
+
17
+ const mulberry32 = (a: number) => () => {
18
+ let t = (a += 0x6d2b79f5);
19
+ t = Math.imul(t ^ (t >>> 15), t | 1);
20
+ t ^= t + Math.imul(t ^ (t >>> 7), t | 61);
21
+ return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
22
+ };
23
+
24
+ const FONT = '"Avenir Next", Futura, "Helvetica Neue", sans-serif';
25
+ // 截图 5:S 偏蓝青 → 中段紫 → 粉 → 尾部琥珀
26
+ const GRAD = 'linear-gradient(92deg, #59c2ff 0%, #9d6bff 32%, #ff6ed4 62%, #ffc46b 100%)';
27
+
28
+ export const GRADIENT_WORD_SWEEP_DURATION = 105;
29
+
30
+ const FILL_START = 12;
31
+ const FILL_END = 30; // 18 帧 ≈ 0.6s,快扫
32
+ const LIGHT_START = FILL_END + 3;
33
+
34
+ // ---------- 种子化噪声与闪电 ----------
35
+ const rand = mulberry32(20260718);
36
+ const FLICKER: number[] = Array.from({ length: 160 }, () => rand());
37
+
38
+ type Bolt = { d: string; long: boolean };
39
+ const makeLongBolt = (r: () => number): Bolt => {
40
+ // 词上方勾连长弧:横跨若干字符,锯齿折线
41
+ const x0 = 30 + r() * 220;
42
+ const x1 = x0 + 160 + r() * 320;
43
+ const yBase = 38 + r() * 42;
44
+ const n = 7 + Math.floor(r() * 4);
45
+ let d = `M ${x0.toFixed(1)} ${(yBase + 26 + r() * 20).toFixed(1)}`;
46
+ for (let i = 1; i <= n; i++) {
47
+ const x = x0 + ((x1 - x0) * i) / n + (r() - 0.5) * 22;
48
+ const arch = Math.sin((i / n) * Math.PI) * -22; // 中段拱起
49
+ const y = yBase + arch + (r() - 0.5) * 30 + (i === n ? 30 + r() * 18 : 0);
50
+ d += ` L ${x.toFixed(1)} ${y.toFixed(1)}`;
51
+ }
52
+ return { d, long: true };
53
+ };
54
+ const makeShortBolt = (r: () => number): Bolt => {
55
+ // 字符之间的短勾连:竖向小锯齿
56
+ const x = 60 + r() * 540;
57
+ const y0 = 72 + r() * 24;
58
+ const y1 = y0 + 55 + r() * 45;
59
+ const n = 4 + Math.floor(r() * 3);
60
+ let d = `M ${x.toFixed(1)} ${y0.toFixed(1)}`;
61
+ for (let i = 1; i <= n; i++) {
62
+ const y = y0 + ((y1 - y0) * i) / n;
63
+ const xx = x + (r() - 0.5) * 30;
64
+ d += ` L ${xx.toFixed(1)} ${y.toFixed(1)}`;
65
+ }
66
+ return { d, long: false };
67
+ };
68
+
69
+ const BOLTS: Bolt[] = Array.from({ length: 16 }, (_, i) =>
70
+ i % 3 === 0 ? makeShortBolt(rand) : makeLongBolt(rand),
71
+ );
72
+ // 闪烁事件:排期而非随机——稀疏零星(同屏 ≤1 道、间隔 ≥9f),末次约 92f 熄灭,留出落定呼吸
73
+ type Flash = { at: number; life: number; bolt: number };
74
+ const FLASH_AT = [2, 12, 22, 33, 43, 52, 56];
75
+ const FLASHES: Flash[] = FLASH_AT.map((d, k) => ({
76
+ at: LIGHT_START + d,
77
+ life: k === FLASH_AT.length - 1 ? 3 : 3 + Math.floor(rand() * 2),
78
+ bolt: (k * 5 + 1) % BOLTS.length,
79
+ }));
80
+
81
+ // 外扩盒:带模糊的辉光层放进四周外扩 PAD 的盒子,mask 不再把溢出的光切成矩形
82
+ const PAD = 90;
83
+ // 文字坐标里的百分比 x → 外扩盒里的 mask 色标
84
+ const at = (x: number) => `calc(${PAD}px + (100% - ${PAD * 2}px) * ${(Math.max(-20, Math.min(120, x)) / 100).toFixed(4)})`;
85
+ const Halo: React.FC<{ mask?: string; style?: React.CSSProperties; children: React.ReactNode }> = ({ mask, style, children }) => (
86
+ <span
87
+ aria-hidden
88
+ style={{
89
+ position: 'absolute',
90
+ left: -PAD,
91
+ top: -PAD,
92
+ right: -PAD,
93
+ bottom: -PAD,
94
+ padding: PAD,
95
+ ...(mask ? { WebkitMaskImage: mask, maskImage: mask } : {}),
96
+ ...style,
97
+ }}
98
+ >
99
+ <span style={{ position: 'relative', display: 'block', width: '100%', height: '100%' }}>{children}</span>
100
+ </span>
101
+ );
102
+
103
+ export const GradientWordSweep: React.FC = () => {
104
+ const frame = useCurrentFrame();
105
+
106
+ // 入场:两行错峰 blur-slide(第二行晚 4f),同一条 snappy 进度驱动 y/blur/opacity
107
+ const enter1 = ramp(frame, 0, 14, EASE.snappy);
108
+ const enter2 = ramp(frame, 4, 14, EASE.snappy);
109
+ const lineIn = (e: number): React.CSSProperties => ({
110
+ opacity: e,
111
+ transform: `translateY(${(1 - e) * 36}px)`,
112
+ filter: e < 0.999 ? `blur(${((1 - e) * 10).toFixed(2)}px)` : undefined,
113
+ });
114
+ // 整段极缓推近(smooth,起止速度为 0)
115
+ const push = 1 + 0.025 * ramp(frame, 0, 104, EASE.smooth);
116
+
117
+ // 快速填充进度
118
+ const p = interpolate(frame, [FILL_START, FILL_END], [0, 1], {
119
+ extrapolateLeft: 'clamp',
120
+ extrapolateRight: 'clamp',
121
+ easing: Easing.out(Easing.quad),
122
+ });
123
+ const pPct = p * 100;
124
+ const filling = frame >= FILL_START && frame <= FILL_END + 4;
125
+ const headFade = interpolate(frame, [FILL_END, FILL_END + 6], [1, 0], {
126
+ extrapolateLeft: 'clamp',
127
+ extrapolateRight: 'clamp',
128
+ });
129
+
130
+ // 波前尾迹:刚点亮字符最亮,向后衰减;填充结束后整体淡出到稳态
131
+ const trailFade = interpolate(frame, [FILL_END, FILL_END + 10], [1, 0], {
132
+ extrapolateLeft: 'clamp',
133
+ extrapolateRight: 'clamp',
134
+ });
135
+ const TRAIL = 34; // 尾迹长度(% 宽度)
136
+ const trailMask =
137
+ `linear-gradient(90deg, transparent 0%, transparent ${at(pPct - TRAIL)}, ` +
138
+ `rgba(0,0,0,0.9) ${at(pPct - 3)}, rgba(0,0,0,0.9) ${at(pPct + 1)}, ` +
139
+ `transparent ${at(pPct + 6)})`;
140
+ // 填充头亮核:只露波前 ~10% 词宽,两侧软边(原 clipPath 硬裁 → 方框)
141
+ const headMask =
142
+ `linear-gradient(90deg, transparent 0%, transparent ${at(pPct - 12)}, #000 ${at(pPct - 6)}, ` +
143
+ `#000 ${at(pPct - 1)}, transparent ${at(pPct + 2)})`;
144
+
145
+ const noise = FLICKER[Math.min(frame, FLICKER.length - 1)];
146
+ // 当前帧活跃闪电
147
+ const active = FLASHES.filter((f) => frame >= f.at && frame < f.at + f.life);
148
+ const boltBoost = active.length > 0 ? 0.35 : 0;
149
+ // 辉光呼吸:填满后带噪声微闪 + 闪电时增亮
150
+ const glowLvl =
151
+ interpolate(frame, [FILL_START, FILL_END], [0, 1], {
152
+ extrapolateLeft: 'clamp',
153
+ extrapolateRight: 'clamp',
154
+ }) *
155
+ (0.82 + 0.18 * noise) +
156
+ boltBoost;
157
+
158
+ // 软边遮罩:辉光层的填充边缘不生硬
159
+ const softMask = (soft: number): string | undefined =>
160
+ p >= 1
161
+ ? undefined
162
+ : `linear-gradient(90deg, #000 0%, #000 ${at(pPct - soft)}, transparent ${at(pPct + soft * 0.6)})`;
163
+
164
+ const lineStyle: React.CSSProperties = {
165
+ fontFamily: FONT,
166
+ fontWeight: 700,
167
+ fontStyle: 'italic',
168
+ fontSize: 92,
169
+ letterSpacing: -1,
170
+ lineHeight: 1.28,
171
+ color: '#ffffff',
172
+ whiteSpace: 'nowrap',
173
+ };
174
+
175
+ const gradText: React.CSSProperties = {
176
+ position: 'absolute',
177
+ inset: 0,
178
+ backgroundImage: GRAD,
179
+ WebkitBackgroundClip: 'text',
180
+ backgroundClip: 'text',
181
+ color: 'transparent',
182
+ };
183
+
184
+ return (
185
+ <AbsoluteFill
186
+ style={{
187
+ background: 'radial-gradient(ellipse 70% 70% at 50% 48%, #0d0b14 0%, #07060a 60%, #040405 100%)',
188
+ justifyContent: 'center',
189
+ alignItems: 'center',
190
+ }}
191
+ >
192
+ <div style={{ position: 'absolute', inset: 0, transform: `scale(${push})` }}>
193
+ {/* 词后方环境泛光(大半径,随充能增强) */}
194
+ <div
195
+ style={{
196
+ position: 'absolute',
197
+ left: 500,
198
+ top: 340,
199
+ width: 820,
200
+ height: 320,
201
+ borderRadius: '50%',
202
+ background:
203
+ 'radial-gradient(closest-side, rgba(180,110,255,0.6), rgba(255,110,212,0.25) 55%, transparent 78%)',
204
+ filter: 'blur(38px)',
205
+ opacity: 0.55 * glowLvl,
206
+ }}
207
+ />
208
+ </div>
209
+ <div style={{ textAlign: 'center', transform: `scale(${push})` }}>
210
+ <div style={{ ...lineStyle, ...lineIn(enter1) }}>
211
+ <span style={{ position: 'relative', display: 'inline-block' }}>
212
+ <span>Supercharged</span>
213
+ {/* AE 式辉光:大半径柔光层(最糊) */}
214
+ <Halo mask={softMask(14)} style={{ opacity: 0.55 * glowLvl }}>
215
+ <span style={{ ...gradText, filter: 'blur(46px) saturate(1.6)', transform: 'scale(1.05)' }}>Supercharged</span>
216
+ </Halo>
217
+ {/* 中晕层 */}
218
+ <Halo mask={softMask(10)} style={{ opacity: 0.62 * glowLvl }}>
219
+ <span style={{ ...gradText, filter: 'blur(18px) saturate(1.4) brightness(1.15)' }}>Supercharged</span>
220
+ </Halo>
221
+ {/* 近核柔光 */}
222
+ <Halo mask={softMask(7)} style={{ opacity: 0.72 * Math.min(1, glowLvl + 0.1) }}>
223
+ <span style={{ ...gradText, filter: 'blur(6px) brightness(1.25)' }}>Supercharged</span>
224
+ </Halo>
225
+ {/* 清晰渐变本体(无模糊,clipPath 硬裁即渐变前沿) */}
226
+ <span
227
+ aria-hidden
228
+ style={{
229
+ ...gradText,
230
+ clipPath: `inset(-25% ${100 - pPct}% -25% 0)`,
231
+ }}
232
+ >
233
+ Supercharged
234
+ </span>
235
+ {/* 波前尾迹增亮:刚点亮字符辉光最强,向后衰减到稳态 */}
236
+ {trailFade > 0.01 && (
237
+ <Halo mask={trailMask} style={{ opacity: 0.95 * trailFade }}>
238
+ <span style={{ ...gradText, filter: 'blur(9px) saturate(1.7) brightness(1.7)' }}>Supercharged</span>
239
+ </Halo>
240
+ )}
241
+ {/* 填充头字符过曝亮核(字符形状,非独立光点;仅填充期间;软边 mask 不再出方框) */}
242
+ {filling && p < 1 && (
243
+ <Halo mask={headMask} style={{ opacity: 0.9 * headFade }}>
244
+ <span
245
+ style={{
246
+ position: 'absolute',
247
+ inset: 0,
248
+ color: '#fff',
249
+ filter: 'blur(3px)',
250
+ textShadow: '0 0 22px rgba(255,255,255,0.9), 0 0 55px rgba(216,150,255,0.8)',
251
+ }}
252
+ >
253
+ Supercharged
254
+ </span>
255
+ </Halo>
256
+ )}
257
+ {/* 勾连闪电:填充完成后,按排期在字符之间/词上方闪现 */}
258
+ <svg
259
+ aria-hidden
260
+ viewBox="0 0 700 240"
261
+ style={{
262
+ position: 'absolute',
263
+ left: -25,
264
+ top: -62,
265
+ width: 700,
266
+ height: 240,
267
+ overflow: 'visible',
268
+ pointerEvents: 'none',
269
+ }}
270
+ >
271
+ {active.map((f, i) => {
272
+ const b = BOLTS[f.bolt];
273
+ const decay = 1 - (frame - f.at) / f.life;
274
+ return (
275
+ <g key={`${f.at}-${i}`} opacity={Math.min(1, 1.1 * decay)}>
276
+ <path
277
+ d={b.d}
278
+ fill="none"
279
+ stroke="rgba(216,60,190,0.65)"
280
+ strokeWidth={b.long ? 6 : 4.5}
281
+ strokeLinejoin="miter"
282
+ style={{ filter: 'blur(6px)' }}
283
+ />
284
+ <path
285
+ d={b.d}
286
+ fill="none"
287
+ stroke="rgba(235,110,215,0.9)"
288
+ strokeWidth={b.long ? 2.4 : 1.9}
289
+ strokeLinejoin="miter"
290
+ style={{ filter: 'blur(1.5px)' }}
291
+ />
292
+ <path
293
+ d={b.d}
294
+ fill="none"
295
+ stroke="#ffd8f2"
296
+ strokeWidth={b.long ? 1.4 : 1.1}
297
+ strokeLinejoin="miter"
298
+ />
299
+ </g>
300
+ );
301
+ })}
302
+ </svg>
303
+ </span>{' '}
304
+ <span>product films</span>
305
+ </div>
306
+ <div style={{ ...lineStyle, ...lineIn(enter2) }}>made with {BRAND.name}</div>
307
+ </div>
308
+ <Vignette strength={0.5} inner={0.45} color="#000000" />
309
+ <Grain opacity={0.07} blend="soft-light" />
310
+ </AbsoluteFill>
311
+ );
312
+ };