dsh-drawai 0.4.1 → 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 (365) hide show
  1. package/README.md +96 -253
  2. package/lib/client.js +28 -7
  3. package/lib/index.js +474 -97
  4. package/lib/motion/asset-pack.js +109 -50
  5. package/lib/motion/assets.js +291 -291
  6. package/lib/motion/demo-assets-lock.js +10 -0
  7. package/lib/motion/mgstyles/vendor/README.md +28 -0
  8. package/lib/motion/mgstyles/vendor/modules/d3/LICENSE +13 -0
  9. package/lib/motion/mgstyles/vendor/modules/d3/dist/d3.min.js +2 -0
  10. package/lib/motion/mgstyles/vendor/modules/opentype.js/LICENSE +20 -0
  11. package/lib/motion/mgstyles/vendor/modules/opentype.js/dist/opentype.mjs +14460 -0
  12. package/lib/motion/mgstyles/vendor/modules/simplex-noise/LICENSE +21 -0
  13. package/lib/motion/mgstyles/vendor/modules/simplex-noise/dist/esm/simplex-noise.js +466 -0
  14. package/lib/motion/mgstyles/vendor/modules/topojson-client/LICENSE +13 -0
  15. package/lib/motion/mgstyles/vendor/modules/topojson-client/dist/topojson-client.min.js +2 -0
  16. package/lib/motion/preview.js +10 -3
  17. package/lib/motion/render.js +19 -1
  18. package/lib/motion/shotcraft/upstream/SKILL.md +286 -286
  19. package/lib/motion/shotcraft/upstream/assets/lib/Caption.tsx +54 -54
  20. package/lib/motion/shotcraft/upstream/assets/lib/ClipCard.tsx +200 -200
  21. package/lib/motion/shotcraft/upstream/assets/lib/DigitRoll.tsx +45 -45
  22. package/lib/motion/shotcraft/upstream/assets/lib/FlashCut.tsx +20 -20
  23. package/lib/motion/shotcraft/upstream/assets/lib/FlatPanel.tsx +65 -65
  24. package/lib/motion/shotcraft/upstream/assets/lib/PageCam.tsx +151 -151
  25. package/lib/motion/shotcraft/upstream/assets/lib/VerticalTicker.tsx +129 -129
  26. package/lib/motion/shotcraft/upstream/assets/lib/helpers/camera.tsx +75 -75
  27. package/lib/motion/shotcraft/upstream/assets/lib/helpers/motion.ts +40 -40
  28. package/lib/motion/shotcraft/upstream/assets/lib/helpers/rand.ts +11 -11
  29. package/lib/motion/shotcraft/upstream/assets/lib/helpers/shake.ts +10 -10
  30. package/lib/motion/shotcraft/upstream/assets/scripts/build-readme-cover.mjs +49 -49
  31. package/lib/motion/shotcraft/upstream/assets/scripts/capture-template.mjs +210 -210
  32. package/lib/motion/shotcraft/upstream/assets/scripts/sfx-source.py +423 -423
  33. package/lib/motion/shotcraft/upstream/assets/scripts/smoke-render-demos.py +170 -170
  34. package/lib/motion/shotcraft/upstream/assets/scripts/test_sfx_source.py +157 -157
  35. package/lib/motion/shotcraft/upstream/demos/README.md +120 -120
  36. package/lib/motion/shotcraft/upstream/demos/_fixtures/Brand.tsx +112 -112
  37. package/lib/motion/shotcraft/upstream/demos/_fixtures/Fixtures.tsx +647 -647
  38. package/lib/motion/shotcraft/upstream/demos/_fixtures/Look.tsx +316 -316
  39. package/lib/motion/shotcraft/upstream/demos/_fixtures/Motion.tsx +82 -82
  40. package/lib/motion/shotcraft/upstream/demos/_fixtures/PageCam2D.tsx +115 -115
  41. package/lib/motion/shotcraft/upstream/demos/_fixtures/Polish.tsx +243 -243
  42. package/lib/motion/shotcraft/upstream/demos/_textures/live-layout.json +388 -388
  43. package/lib/motion/shotcraft/upstream/demos/camera/basic-3d-scene/Basic3DScene.tsx +250 -250
  44. package/lib/motion/shotcraft/upstream/demos/camera/crash-zoom-punch/CrashImpactReal.tsx +305 -305
  45. package/lib/motion/shotcraft/upstream/demos/camera/crash-zoom-punch/CrashZoomReal.tsx +246 -246
  46. package/lib/motion/shotcraft/upstream/demos/camera/cursor-flyover/CursorFlyover.tsx +390 -390
  47. package/lib/motion/shotcraft/upstream/demos/camera/depth-layer-moves/MultiplaneReal.tsx +138 -138
  48. package/lib/motion/shotcraft/upstream/demos/camera/graze-face-tour/GrazeFaceTour.tsx +542 -542
  49. package/lib/motion/shotcraft/upstream/demos/camera/overhead-camera-moves/OverheadTabletopDrop.tsx +315 -315
  50. package/lib/motion/shotcraft/upstream/demos/camera/overhead-camera-moves/TiltReveal.tsx +299 -299
  51. package/lib/motion/shotcraft/upstream/demos/camera/space-camera-moves/DroneDiveLanding.tsx +173 -173
  52. package/lib/motion/shotcraft/upstream/demos/camera/space-camera-moves/ExplodedView.tsx +348 -348
  53. package/lib/motion/shotcraft/upstream/demos/camera/steep-tilt-glide/SteepTiltGlide.tsx +366 -366
  54. package/lib/motion/shotcraft/upstream/demos/camera/tension-camera-moves/BulletTimeFreezeOrbit.tsx +279 -279
  55. package/lib/motion/shotcraft/upstream/demos/camera/tension-camera-moves/PullBackIsolation.tsx +184 -184
  56. package/lib/motion/shotcraft/upstream/demos/camera/terminal-3d/Terminal3D.tsx +390 -390
  57. package/lib/motion/shotcraft/upstream/demos/data/before-after-slider-scrub/BeforeAfterSliderScrub.tsx +155 -155
  58. package/lib/motion/shotcraft/upstream/demos/data/chart-live-moves/AxisRescaleShockV2.tsx +303 -303
  59. package/lib/motion/shotcraft/upstream/demos/data/chart-live-moves/OscilloscopeStreamV2.tsx +290 -290
  60. package/lib/motion/shotcraft/upstream/demos/data/chart-live-moves/UnitDotSwarmRegroupV2.tsx +278 -278
  61. package/lib/motion/shotcraft/upstream/demos/data/gauge-readout-moves/NeedleSweepSelftest.tsx +307 -307
  62. package/lib/motion/shotcraft/upstream/demos/data/gauge-readout-moves/TapeScrollFixedPointer.tsx +215 -215
  63. package/lib/motion/shotcraft/upstream/demos/data/scroll-brake-moves/BrakeReticleLock.tsx +299 -299
  64. package/lib/motion/shotcraft/upstream/demos/data/scroll-brake-moves/ChangelogScrollBrake.tsx +232 -232
  65. package/lib/motion/shotcraft/upstream/demos/data/timeline-travel/TimelineTravel.tsx +290 -290
  66. package/lib/motion/shotcraft/upstream/demos/effects/assemble-then-type-flyin/AssembleThenTypeFlyin.tsx +273 -273
  67. package/lib/motion/shotcraft/upstream/demos/effects/aurora-bloom-bg-flip/AuroraBloomBgFlip.tsx +167 -167
  68. package/lib/motion/shotcraft/upstream/demos/effects/brand-frame-snap/BrandFrameSnap.tsx +536 -536
  69. package/lib/motion/shotcraft/upstream/demos/effects/fui-hud-moves/ReticleLockOn.tsx +164 -164
  70. package/lib/motion/shotcraft/upstream/demos/effects/glow-flyline-moves/FlylineArc.tsx +175 -175
  71. package/lib/motion/shotcraft/upstream/demos/effects/glow-flyline-moves/GlowOrbAmbient.tsx +197 -197
  72. package/lib/motion/shotcraft/upstream/demos/effects/glow-flyline-moves/OrbFlylineRelay.tsx +241 -241
  73. package/lib/motion/shotcraft/upstream/demos/effects/icon-performance-moves/AttentionBounce.tsx +279 -279
  74. package/lib/motion/shotcraft/upstream/demos/effects/impact-feedback/AnimeImpact.tsx +230 -230
  75. package/lib/motion/shotcraft/upstream/demos/effects/impact-feedback/HitCounter.tsx +345 -345
  76. package/lib/motion/shotcraft/upstream/demos/effects/light-play-moves/SheenSweepRetry.tsx +275 -275
  77. package/lib/motion/shotcraft/upstream/demos/effects/light-play-moves/SpotlightSweepReveal.tsx +229 -229
  78. package/lib/motion/shotcraft/upstream/demos/effects/radial-ripple-phone-chips/RadialRipplePhoneChips.tsx +312 -312
  79. package/lib/motion/shotcraft/upstream/demos/effects/riso-print-hits/RisoMisregistrationHit.tsx +222 -222
  80. package/lib/motion/shotcraft/upstream/demos/effects/scan-bracket-sweep/ScanBracketSweep.tsx +295 -295
  81. package/lib/motion/shotcraft/upstream/demos/effects/scanline-annotate-focus/ScanlineAnnotateFocus.tsx +329 -329
  82. package/lib/motion/shotcraft/upstream/demos/effects/scanline-assemble-flyin/ScanlineAssembleFlyin.tsx +315 -315
  83. package/lib/motion/shotcraft/upstream/demos/effects/slam-entrance-moves/ImpactBurstKit.tsx +264 -264
  84. package/lib/motion/shotcraft/upstream/demos/effects/slam-entrance-moves/KanadaPerspectiveSnap.tsx +260 -260
  85. package/lib/motion/shotcraft/upstream/demos/effects/slam-entrance-moves/ScoreSlam.tsx +263 -263
  86. package/lib/motion/shotcraft/upstream/demos/effects/spotlight-sweep-moves/CornerSpotlightReveal.tsx +123 -123
  87. package/lib/motion/shotcraft/upstream/demos/effects/spotlight-sweep-moves/GlowWakeSleepPanel.tsx +187 -187
  88. package/lib/motion/shotcraft/upstream/demos/effects/spotlight-sweep-moves/SlideSpotlightPan.tsx +175 -175
  89. package/lib/motion/shotcraft/upstream/demos/interaction/autolayout-gap-dial/AutolayoutGapDial.tsx +305 -305
  90. package/lib/motion/shotcraft/upstream/demos/interaction/canvas-materialize-moves/DiagramCascadeBuild.tsx +350 -350
  91. package/lib/motion/shotcraft/upstream/demos/interaction/canvas-materialize-moves/PanelToCanvasMaterialize.tsx +352 -352
  92. package/lib/motion/shotcraft/upstream/demos/interaction/chip-grid-single-select-blackout/ChipGridSingleSelectBlackout.tsx +218 -218
  93. package/lib/motion/shotcraft/upstream/demos/interaction/collab-cursor-moves/CursorCastEnsemble.tsx +297 -297
  94. package/lib/motion/shotcraft/upstream/demos/interaction/glass-pill-dictation-typing/GlassPillDictationTyping.tsx +157 -157
  95. package/lib/motion/shotcraft/upstream/demos/interaction/hashtag-to-pill-materialize/HashtagToPillMaterialize.tsx +218 -218
  96. package/lib/motion/shotcraft/upstream/demos/interaction/picker-carousel-feature-cycle/PickerCarouselFeatureCycle.tsx +202 -202
  97. package/lib/motion/shotcraft/upstream/demos/interaction/segmented-thumb-hero/SegmentedThumbHero.tsx +265 -265
  98. package/lib/motion/shotcraft/upstream/demos/interaction/theme-switch-moves/PaletteThemeRipple.tsx +457 -457
  99. package/lib/motion/shotcraft/upstream/demos/interaction/theme-switch-moves/ThemeSweepToggle.tsx +446 -446
  100. package/lib/motion/shotcraft/upstream/demos/interaction/type-and-filter/TypeAndFilter.tsx +249 -249
  101. package/lib/motion/shotcraft/upstream/demos/interaction/voice-waveform-live/VoiceWaveformLive.tsx +278 -278
  102. package/lib/motion/shotcraft/upstream/demos/opening/crane-rise-reveal/CraneRiseReveal.tsx +332 -332
  103. package/lib/motion/shotcraft/upstream/demos/opening/dataviz-landscape-open/DatavizLandscapeOpen.tsx +358 -358
  104. package/lib/motion/shotcraft/upstream/demos/opening/fracture/Fracture.tsx +201 -201
  105. package/lib/motion/shotcraft/upstream/demos/opening/icon-field-colorize/IconFieldColorize.tsx +200 -200
  106. package/lib/motion/shotcraft/upstream/demos/opening/letterspace-materialize/LetterspaceMaterialize.tsx +208 -208
  107. package/lib/motion/shotcraft/upstream/demos/opening/magician-card-flourish/MagicianCardFlourish.tsx +341 -341
  108. package/lib/motion/shotcraft/upstream/demos/opening/orbit-ring-title-open/OrbitRingTitleOpen.tsx +389 -389
  109. package/lib/motion/shotcraft/upstream/demos/opening/spotlight-hero-card/SpotlightHeroCard.tsx +293 -293
  110. package/lib/motion/shotcraft/upstream/demos/opening/stroke-segment-build/StrokeSegmentBuild.tsx +183 -183
  111. package/lib/motion/shotcraft/upstream/demos/opening/text-as-mask/TextAsMask.tsx +245 -245
  112. package/lib/motion/shotcraft/upstream/demos/outro/grain-dissolve/GrainDissolve.tsx +222 -222
  113. package/lib/motion/shotcraft/upstream/demos/outro/logo-shrink-wordmark-lockup/LogoShrinkWordmarkLockup.tsx +223 -223
  114. package/lib/motion/shotcraft/upstream/demos/outro/neon-triple-marquee/NeonTripleMarquee.tsx +217 -217
  115. package/lib/motion/shotcraft/upstream/demos/outro/outro-group-photo-launch/OutroGroupPhotoLaunch.tsx +343 -343
  116. package/lib/motion/shotcraft/upstream/demos/outro/ui-strip-away-outro/UiStripAwayOutro.tsx +357 -357
  117. package/lib/motion/shotcraft/upstream/demos/outro/ui-to-brand-morph/IconFlipBloomLogo.tsx +187 -187
  118. package/lib/motion/shotcraft/upstream/demos/outro/ui-to-brand-morph/InputMorphsIntoLogo.tsx +333 -333
  119. package/lib/motion/shotcraft/upstream/demos/rhythm/beat-cut-moves/PaparazziFlash.tsx +274 -274
  120. package/lib/motion/shotcraft/upstream/demos/rhythm/beat-step-list-theme-cycle/BeatStepListThemeCycle.tsx +270 -270
  121. package/lib/motion/shotcraft/upstream/demos/rhythm/panel-grid-moves/ComicPanelSplit.tsx +430 -430
  122. package/lib/motion/shotcraft/upstream/demos/rhythm/quad-split-parallel-scenes/QuadSplitParallelScenes.tsx +252 -252
  123. package/lib/motion/shotcraft/upstream/demos/rhythm/rhythm-interrupt-moves/JumpCutPunchIn.tsx +106 -106
  124. package/lib/motion/shotcraft/upstream/demos/rhythm/sakuga-timing-shift/SakugaTimingShift.tsx +288 -288
  125. package/lib/motion/shotcraft/upstream/demos/rhythm/speed-ramp-freeze/FreezeAnnotateReal.tsx +362 -362
  126. package/lib/motion/shotcraft/upstream/demos/rhythm/trailer-grammar-moves/TrailerBumper.tsx +168 -168
  127. package/lib/motion/shotcraft/upstream/demos/transition/bottom-push-stack-wipe/BottomPushStackWipe.tsx +310 -310
  128. package/lib/motion/shotcraft/upstream/demos/transition/card-flip-reveal/CardFlipReveal.tsx +261 -261
  129. package/lib/motion/shotcraft/upstream/demos/transition/card-flock-tumble/CardFlockTumble.tsx +459 -459
  130. package/lib/motion/shotcraft/upstream/demos/transition/circle-match-iris/CircleMatchIris.tsx +294 -294
  131. package/lib/motion/shotcraft/upstream/demos/transition/gradient-transition/GradientTransition.tsx +161 -161
  132. package/lib/motion/shotcraft/upstream/demos/transition/line-carry-transition/LineCarryTransition.tsx +248 -248
  133. package/lib/motion/shotcraft/upstream/demos/transition/mosaic-reframe/MosaicReframe.tsx +359 -359
  134. package/lib/motion/shotcraft/upstream/demos/transition/page-turn-transitions/BarnDoorSplit.tsx +227 -227
  135. package/lib/motion/shotcraft/upstream/demos/transition/print-texture-transitions/InkBleedReveal.tsx +162 -162
  136. package/lib/motion/shotcraft/upstream/demos/transition/shot-transitions/PortalWipeV2.tsx +248 -248
  137. package/lib/motion/shotcraft/upstream/demos/transition/shot-transitions/WhipBrakeReal.tsx +186 -186
  138. package/lib/motion/shotcraft/upstream/demos/transition/tear-streak-transitions/GlitchDisplace.tsx +355 -355
  139. package/lib/motion/shotcraft/upstream/demos/transition/transition-hidden-cut/InvisibleCut.tsx +272 -272
  140. package/lib/motion/shotcraft/upstream/demos/transition/transition-hidden-cut/LightLeakBurn.tsx +262 -262
  141. package/lib/motion/shotcraft/upstream/demos/transition/transition-hidden-cut/VersusSlam.tsx +217 -217
  142. package/lib/motion/shotcraft/upstream/demos/transition/transition-travel/LetterformZoom.tsx +285 -285
  143. package/lib/motion/shotcraft/upstream/demos/transition/white-flash-logo-simplify-cut/WhiteFlashLogoSimplifyCut.tsx +205 -205
  144. package/lib/motion/shotcraft/upstream/demos/transition/wipe-transitions/BlindsSlice.tsx +178 -178
  145. package/lib/motion/shotcraft/upstream/demos/typography/blur-slide/BlurSlide.tsx +147 -147
  146. package/lib/motion/shotcraft/upstream/demos/typography/brace-expand/BraceExpand.tsx +143 -143
  147. package/lib/motion/shotcraft/upstream/demos/typography/brand-ink-open/BrandInkOpen.tsx +134 -134
  148. package/lib/motion/shotcraft/upstream/demos/typography/countdown-arc-scatter/CountdownArcScatter.tsx +217 -217
  149. package/lib/motion/shotcraft/upstream/demos/typography/flying-words/FlyingWords.tsx +198 -198
  150. package/lib/motion/shotcraft/upstream/demos/typography/glitch-cycle/GlitchCycle.tsx +221 -221
  151. package/lib/motion/shotcraft/upstream/demos/typography/gradient-word-sweep/GradientWordSweep.tsx +312 -312
  152. package/lib/motion/shotcraft/upstream/demos/typography/lead-word-zoom-assemble/LeadWordZoomAssemble.tsx +261 -261
  153. package/lib/motion/shotcraft/upstream/demos/typography/marker-underline-title/MarkerUnderlineTitle.tsx +121 -121
  154. package/lib/motion/shotcraft/upstream/demos/typography/outline-word-fill/OutlineWordFill.tsx +153 -153
  155. package/lib/motion/shotcraft/upstream/demos/typography/paper-title-card/PaperTitleCard.tsx +179 -179
  156. package/lib/motion/shotcraft/upstream/demos/typography/pill-chip-slot-cycle-handled/PillChipSlotCycleHandled.tsx +140 -140
  157. package/lib/motion/shotcraft/upstream/demos/typography/pill-slot-cycle/PillSlotCycle.tsx +309 -309
  158. package/lib/motion/shotcraft/upstream/demos/typography/text-column-converge/TextColumnConverge.tsx +191 -191
  159. package/lib/motion/shotcraft/upstream/demos/typography/title-demote-to-label/TitleDemoteToLabel.tsx +292 -292
  160. package/lib/motion/shotcraft/upstream/demos/typography/type-assembly-moves/LetterformDriftAssembly.tsx +135 -135
  161. package/lib/motion/shotcraft/upstream/demos/typography/type-assembly-moves/SplitTextStagger.tsx +124 -124
  162. package/lib/motion/shotcraft/upstream/demos/typography/type-assembly-moves/TextOnPath.tsx +255 -255
  163. package/lib/motion/shotcraft/upstream/demos/typography/type-entrance-moves/LetterDropPhysics.tsx +173 -173
  164. package/lib/motion/shotcraft/upstream/demos/typography/type-rhythm-sync/FontWeightPump.tsx +225 -225
  165. package/lib/motion/shotcraft/upstream/demos/typography/type-rhythm-sync/KaraokeFillSync.tsx +141 -141
  166. package/lib/motion/shotcraft/upstream/demos/typography/typewriter-moves/TypewriterErrorRetype.tsx +137 -137
  167. package/lib/motion/shotcraft/upstream/demos/typography/vertical-word-roll-blur-cycle/VerticalWordRollBlurCycle.tsx +147 -147
  168. package/lib/motion/shotcraft/upstream/demos/typography/word-relay-filmstrip/WordRelayFilmstrip.tsx +409 -409
  169. package/lib/motion/shotcraft/upstream/demos/typography/word-relay-geometry/WordRelayGeometry.tsx +280 -280
  170. package/lib/motion/shotcraft/upstream/demos/ui-entrance/avatar-bracket-carousel/AvatarBracketCarousel.tsx +271 -271
  171. package/lib/motion/shotcraft/upstream/demos/ui-entrance/bezier-source-converge-merge/BezierSourceConvergeMerge.tsx +385 -385
  172. package/lib/motion/shotcraft/upstream/demos/ui-entrance/card-stack/CardStack.tsx +312 -312
  173. package/lib/motion/shotcraft/upstream/demos/ui-entrance/carousel-3d/Carousel3D.tsx +303 -303
  174. package/lib/motion/shotcraft/upstream/demos/ui-entrance/clipcard-looping/ClipCardLooping.tsx +77 -77
  175. package/lib/motion/shotcraft/upstream/demos/ui-entrance/cloner-depth-echo/ClonerDepthEcho.tsx +311 -311
  176. package/lib/motion/shotcraft/upstream/demos/ui-entrance/deck-deal-flyin/DeckDealFlyin.tsx +307 -307
  177. package/lib/motion/shotcraft/upstream/demos/ui-entrance/doc-park-left-pill-deal/DocParkLeftPillDeal.tsx +349 -349
  178. package/lib/motion/shotcraft/upstream/demos/ui-entrance/document-typewriter-reveal/DocumentTypewriterReveal.tsx +255 -255
  179. package/lib/motion/shotcraft/upstream/demos/ui-entrance/draw-svg-trace/DrawSvgTrace.tsx +244 -244
  180. package/lib/motion/shotcraft/upstream/demos/ui-entrance/element-body-moves/ContactShadowLift.tsx +217 -217
  181. package/lib/motion/shotcraft/upstream/demos/ui-entrance/integration-hub-map/IntegrationHubMap.tsx +652 -652
  182. package/lib/motion/shotcraft/upstream/demos/ui-entrance/list-reveal/ListReveal.tsx +153 -153
  183. package/lib/motion/shotcraft/upstream/demos/ui-entrance/list-stack-press/ListStackPress.tsx +238 -238
  184. package/lib/motion/shotcraft/upstream/demos/ui-entrance/neon-frame-forerun/NeonFrameForerun.tsx +324 -324
  185. package/lib/motion/shotcraft/upstream/demos/ui-entrance/neon-frame-orbit-drop/NeonFrameForerunOrbit.tsx +354 -354
  186. package/lib/motion/shotcraft/upstream/demos/ui-entrance/page-waterfall-wall/PageWaterfallWall.tsx +101 -101
  187. package/lib/motion/shotcraft/upstream/demos/ui-entrance/page-waterfall-wall/VerticalTicker.tsx +129 -129
  188. package/lib/motion/shotcraft/upstream/demos/ui-entrance/product-card-progressive-assemble/ProductCardProgressiveAssemble.tsx +297 -297
  189. package/lib/motion/shotcraft/upstream/demos/ui-entrance/radial-wave/RadialWave.tsx +57 -57
  190. package/lib/motion/shotcraft/upstream/demos/ui-entrance/research-card-stack-scroll/ResearchCardStackScroll.tsx +155 -155
  191. package/lib/motion/shotcraft/upstream/demos/ui-entrance/row-embed/RowEmbed.tsx +175 -175
  192. package/lib/motion/shotcraft/upstream/demos/ui-entrance/value-stagger-gradient/ValueStaggerGradient.tsx +153 -153
  193. package/lib/motion/shotcraft/upstream/demos/ui-entrance/wall-reveal-moves/BentoLightUp.tsx +146 -146
  194. package/lib/motion/shotcraft/upstream/demos/ui-entrance/wall-reveal-moves/WireframeDrawOn.tsx +226 -226
  195. package/lib/motion/shotcraft/upstream/gallery/api/library.json +1 -1
  196. package/lib/motion/shotcraft/upstream/references/aesthetic-rules.md +193 -193
  197. package/lib/motion/shotcraft/upstream/references/final-review.md +121 -121
  198. package/lib/motion/shotcraft/upstream/references/guided-free-creation.md +199 -199
  199. package/lib/motion/shotcraft/upstream/references/jianying-export.md +183 -183
  200. package/lib/motion/shotcraft/upstream/references/music-beat-sync.md +257 -257
  201. package/lib/motion/shotcraft/upstream/references/pipeline.md +382 -382
  202. package/lib/motion/shotcraft/upstream/references/publish-upload-post.md +111 -111
  203. package/lib/motion/shotcraft/upstream/references/sequences/promo-energy-arc.md +50 -50
  204. package/lib/motion/shotcraft/upstream/references/sfx-sourcing.md +95 -95
  205. package/lib/motion/shotcraft/upstream/references/shots/camera/basic-3d-scene.md +41 -41
  206. package/lib/motion/shotcraft/upstream/references/shots/camera/crash-zoom-punch.md +52 -52
  207. package/lib/motion/shotcraft/upstream/references/shots/camera/cursor-flyover.md +39 -39
  208. package/lib/motion/shotcraft/upstream/references/shots/camera/depth-layer-moves.md +39 -39
  209. package/lib/motion/shotcraft/upstream/references/shots/camera/graze-face-tour.md +57 -57
  210. package/lib/motion/shotcraft/upstream/references/shots/camera/overhead-camera-moves.md +51 -51
  211. package/lib/motion/shotcraft/upstream/references/shots/camera/space-camera-moves.md +46 -46
  212. package/lib/motion/shotcraft/upstream/references/shots/camera/steep-tilt-glide.md +52 -52
  213. package/lib/motion/shotcraft/upstream/references/shots/camera/tension-camera-moves.md +43 -43
  214. package/lib/motion/shotcraft/upstream/references/shots/camera/terminal-3d.md +42 -42
  215. package/lib/motion/shotcraft/upstream/references/shots/data/before-after-slider-scrub.md +48 -48
  216. package/lib/motion/shotcraft/upstream/references/shots/data/chart-live-moves.md +52 -52
  217. package/lib/motion/shotcraft/upstream/references/shots/data/gauge-readout-moves.md +45 -45
  218. package/lib/motion/shotcraft/upstream/references/shots/data/scroll-brake-moves.md +46 -46
  219. package/lib/motion/shotcraft/upstream/references/shots/data/timeline-travel.md +44 -44
  220. package/lib/motion/shotcraft/upstream/references/shots/effects/assemble-then-type-flyin.md +63 -63
  221. package/lib/motion/shotcraft/upstream/references/shots/effects/aurora-bloom-bg-flip.md +54 -54
  222. package/lib/motion/shotcraft/upstream/references/shots/effects/brand-frame-snap.md +58 -58
  223. package/lib/motion/shotcraft/upstream/references/shots/effects/fui-hud-moves.md +35 -35
  224. package/lib/motion/shotcraft/upstream/references/shots/effects/glow-flyline-moves.md +53 -53
  225. package/lib/motion/shotcraft/upstream/references/shots/effects/icon-performance-moves.md +42 -42
  226. package/lib/motion/shotcraft/upstream/references/shots/effects/impact-feedback.md +50 -50
  227. package/lib/motion/shotcraft/upstream/references/shots/effects/light-play-moves.md +46 -46
  228. package/lib/motion/shotcraft/upstream/references/shots/effects/radial-ripple-phone-chips.md +56 -56
  229. package/lib/motion/shotcraft/upstream/references/shots/effects/riso-print-hits.md +49 -49
  230. package/lib/motion/shotcraft/upstream/references/shots/effects/scan-bracket-sweep.md +50 -50
  231. package/lib/motion/shotcraft/upstream/references/shots/effects/scanline-annotate-focus.md +53 -53
  232. package/lib/motion/shotcraft/upstream/references/shots/effects/scanline-assemble-flyin.md +53 -53
  233. package/lib/motion/shotcraft/upstream/references/shots/effects/slam-entrance-moves.md +55 -55
  234. package/lib/motion/shotcraft/upstream/references/shots/effects/spotlight-sweep-moves.md +52 -52
  235. package/lib/motion/shotcraft/upstream/references/shots/interaction/autolayout-gap-dial.md +60 -60
  236. package/lib/motion/shotcraft/upstream/references/shots/interaction/canvas-materialize-moves.md +57 -57
  237. package/lib/motion/shotcraft/upstream/references/shots/interaction/chip-grid-single-select-blackout.md +51 -51
  238. package/lib/motion/shotcraft/upstream/references/shots/interaction/collab-cursor-moves.md +41 -41
  239. package/lib/motion/shotcraft/upstream/references/shots/interaction/glass-pill-dictation-typing.md +53 -53
  240. package/lib/motion/shotcraft/upstream/references/shots/interaction/hashtag-to-pill-materialize.md +60 -60
  241. package/lib/motion/shotcraft/upstream/references/shots/interaction/picker-carousel-feature-cycle.md +55 -55
  242. package/lib/motion/shotcraft/upstream/references/shots/interaction/segmented-thumb-hero.md +57 -57
  243. package/lib/motion/shotcraft/upstream/references/shots/interaction/theme-switch-moves.md +47 -47
  244. package/lib/motion/shotcraft/upstream/references/shots/interaction/type-and-filter.md +37 -37
  245. package/lib/motion/shotcraft/upstream/references/shots/interaction/voice-waveform-live.md +54 -54
  246. package/lib/motion/shotcraft/upstream/references/shots/opening/brand-ink-open.md +36 -36
  247. package/lib/motion/shotcraft/upstream/references/shots/opening/crane-rise-reveal.md +56 -56
  248. package/lib/motion/shotcraft/upstream/references/shots/opening/dataviz-landscape-open.md +56 -56
  249. package/lib/motion/shotcraft/upstream/references/shots/opening/fracture.md +40 -40
  250. package/lib/motion/shotcraft/upstream/references/shots/opening/icon-field-colorize.md +60 -60
  251. package/lib/motion/shotcraft/upstream/references/shots/opening/letterspace-materialize.md +57 -57
  252. package/lib/motion/shotcraft/upstream/references/shots/opening/magician-card-flourish.md +73 -73
  253. package/lib/motion/shotcraft/upstream/references/shots/opening/orbit-ring-title-open.md +87 -87
  254. package/lib/motion/shotcraft/upstream/references/shots/opening/spotlight-hero-card.md +55 -55
  255. package/lib/motion/shotcraft/upstream/references/shots/opening/stroke-segment-build.md +50 -50
  256. package/lib/motion/shotcraft/upstream/references/shots/opening/text-as-mask.md +59 -59
  257. package/lib/motion/shotcraft/upstream/references/shots/outro/grain-dissolve.md +38 -38
  258. package/lib/motion/shotcraft/upstream/references/shots/outro/logo-shrink-wordmark-lockup.md +38 -38
  259. package/lib/motion/shotcraft/upstream/references/shots/outro/neon-triple-marquee.md +59 -59
  260. package/lib/motion/shotcraft/upstream/references/shots/outro/outro-group-photo-launch.md +39 -39
  261. package/lib/motion/shotcraft/upstream/references/shots/outro/ui-strip-away-outro.md +61 -61
  262. package/lib/motion/shotcraft/upstream/references/shots/outro/ui-to-brand-morph.md +52 -52
  263. package/lib/motion/shotcraft/upstream/references/shots/rhythm/beat-cut-moves.md +50 -50
  264. package/lib/motion/shotcraft/upstream/references/shots/rhythm/beat-step-list-theme-cycle.md +66 -66
  265. package/lib/motion/shotcraft/upstream/references/shots/rhythm/panel-grid-moves.md +43 -43
  266. package/lib/motion/shotcraft/upstream/references/shots/rhythm/quad-split-parallel-scenes.md +38 -38
  267. package/lib/motion/shotcraft/upstream/references/shots/rhythm/rhythm-interrupt-moves.md +38 -38
  268. package/lib/motion/shotcraft/upstream/references/shots/rhythm/sakuga-timing-shift.md +56 -56
  269. package/lib/motion/shotcraft/upstream/references/shots/rhythm/speed-ramp-freeze.md +44 -44
  270. package/lib/motion/shotcraft/upstream/references/shots/rhythm/trailer-grammar-moves.md +38 -38
  271. package/lib/motion/shotcraft/upstream/references/shots/transition/bottom-push-stack-wipe.md +63 -63
  272. package/lib/motion/shotcraft/upstream/references/shots/transition/card-flip-reveal.md +57 -57
  273. package/lib/motion/shotcraft/upstream/references/shots/transition/card-flock-tumble.md +63 -63
  274. package/lib/motion/shotcraft/upstream/references/shots/transition/circle-match-iris.md +58 -58
  275. package/lib/motion/shotcraft/upstream/references/shots/transition/gradient-transition.md +45 -45
  276. package/lib/motion/shotcraft/upstream/references/shots/transition/line-carry-transition.md +55 -55
  277. package/lib/motion/shotcraft/upstream/references/shots/transition/mosaic-reframe.md +49 -49
  278. package/lib/motion/shotcraft/upstream/references/shots/transition/page-turn-transitions.md +42 -42
  279. package/lib/motion/shotcraft/upstream/references/shots/transition/print-texture-transitions.md +42 -42
  280. package/lib/motion/shotcraft/upstream/references/shots/transition/shot-transitions.md +45 -45
  281. package/lib/motion/shotcraft/upstream/references/shots/transition/tear-streak-transitions.md +48 -48
  282. package/lib/motion/shotcraft/upstream/references/shots/transition/transition-hidden-cut.md +55 -55
  283. package/lib/motion/shotcraft/upstream/references/shots/transition/transition-travel.md +43 -43
  284. package/lib/motion/shotcraft/upstream/references/shots/transition/white-flash-logo-simplify-cut.md +41 -41
  285. package/lib/motion/shotcraft/upstream/references/shots/transition/wipe-transitions.md +42 -42
  286. package/lib/motion/shotcraft/upstream/references/shots/typography/blur-slide.md +59 -59
  287. package/lib/motion/shotcraft/upstream/references/shots/typography/brace-expand.md +55 -55
  288. package/lib/motion/shotcraft/upstream/references/shots/typography/countdown-arc-scatter.md +65 -65
  289. package/lib/motion/shotcraft/upstream/references/shots/typography/document-typewriter-reveal.md +42 -42
  290. package/lib/motion/shotcraft/upstream/references/shots/typography/flying-words.md +64 -64
  291. package/lib/motion/shotcraft/upstream/references/shots/typography/glitch-cycle.md +64 -64
  292. package/lib/motion/shotcraft/upstream/references/shots/typography/gradient-word-sweep.md +54 -54
  293. package/lib/motion/shotcraft/upstream/references/shots/typography/lead-word-zoom-assemble.md +91 -91
  294. package/lib/motion/shotcraft/upstream/references/shots/typography/marker-underline-title.md +51 -51
  295. package/lib/motion/shotcraft/upstream/references/shots/typography/outline-word-fill.md +66 -66
  296. package/lib/motion/shotcraft/upstream/references/shots/typography/paper-title-card.md +38 -38
  297. package/lib/motion/shotcraft/upstream/references/shots/typography/pill-chip-slot-cycle-handled.md +66 -66
  298. package/lib/motion/shotcraft/upstream/references/shots/typography/pill-slot-cycle.md +58 -58
  299. package/lib/motion/shotcraft/upstream/references/shots/typography/text-column-converge.md +61 -61
  300. package/lib/motion/shotcraft/upstream/references/shots/typography/title-demote-to-label.md +64 -64
  301. package/lib/motion/shotcraft/upstream/references/shots/typography/type-assembly-moves.md +45 -45
  302. package/lib/motion/shotcraft/upstream/references/shots/typography/type-entrance-moves.md +41 -41
  303. package/lib/motion/shotcraft/upstream/references/shots/typography/type-rhythm-sync.md +51 -51
  304. package/lib/motion/shotcraft/upstream/references/shots/typography/typewriter-moves.md +42 -42
  305. package/lib/motion/shotcraft/upstream/references/shots/typography/vertical-word-roll-blur-cycle.md +63 -63
  306. package/lib/motion/shotcraft/upstream/references/shots/typography/word-relay-filmstrip.md +57 -57
  307. package/lib/motion/shotcraft/upstream/references/shots/typography/word-relay-geometry.md +75 -75
  308. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/avatar-bracket-carousel.md +59 -59
  309. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/bezier-source-converge-merge.md +67 -67
  310. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/card-stack.md +60 -60
  311. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/carousel-3d.md +66 -66
  312. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/cloner-depth-echo.md +40 -40
  313. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/deck-deal-flyin.md +45 -45
  314. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/doc-park-left-pill-deal.md +62 -62
  315. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/draw-svg-trace.md +55 -55
  316. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/element-body-moves.md +37 -37
  317. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/integration-hub-map.md +55 -55
  318. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/list-reveal.md +50 -50
  319. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/list-stack-press.md +43 -43
  320. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/neon-frame-forerun.md +55 -55
  321. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/neon-frame-orbit-drop.md +51 -51
  322. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/page-waterfall-wall.md +51 -51
  323. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/product-card-progressive-assemble.md +56 -56
  324. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/radial-wave.md +49 -49
  325. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/research-card-stack-scroll.md +57 -57
  326. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/row-embed.md +36 -36
  327. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/value-stagger-gradient.md +64 -64
  328. package/lib/motion/shotcraft/upstream/references/shots/ui-entrance/wall-reveal-moves.md +47 -47
  329. package/lib/motion/shotcraft/upstream/references/sound-design.md +170 -170
  330. package/lib/motion/shotcraft/upstream/references/workbench.md +157 -157
  331. package/lib/motion/shotcraft/upstream/template/TEMPLATE.md +103 -103
  332. package/lib/motion/shotcraft/upstream/template/THEMES.md +44 -44
  333. package/lib/motion/shotcraft/upstream/template/package.json +20 -20
  334. package/lib/motion/shotcraft/upstream/template/remotion.config.ts +6 -6
  335. package/lib/motion/shotcraft/upstream/template/src/Root.tsx +17 -17
  336. package/lib/motion/shotcraft/upstream/template/src/aifl/Caption.tsx +65 -65
  337. package/lib/motion/shotcraft/upstream/template/src/aifl/DigitRoll.tsx +48 -48
  338. package/lib/motion/shotcraft/upstream/template/src/aifl/FlashCut.tsx +24 -24
  339. package/lib/motion/shotcraft/upstream/template/src/aifl/Main.tsx +192 -192
  340. package/lib/motion/shotcraft/upstream/template/src/aifl/PaperTitleCard.tsx +111 -111
  341. package/lib/motion/shotcraft/upstream/template/src/aifl/live/PageCam.tsx +150 -150
  342. package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneDetail.tsx +158 -158
  343. package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneFlyIn.tsx +468 -468
  344. package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneOpen.tsx +552 -552
  345. package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneOutroLive.tsx +411 -411
  346. package/lib/motion/shotcraft/upstream/template/src/aifl/live/ScenePapers.tsx +200 -200
  347. package/lib/motion/shotcraft/upstream/template/src/aifl/live/SceneWbr.tsx +324 -324
  348. package/lib/motion/shotcraft/upstream/template/src/aifl/live-layout.json +388 -388
  349. package/lib/motion/shotcraft/upstream/template/src/index.ts +4 -4
  350. package/lib/motion/shotcraft/upstream/template/src/themes/ThemedFilm.tsx +7 -7
  351. package/lib/motion/shotcraft/upstream/template/src/themes/manifest.tsx +68 -68
  352. package/lib/motion/shotcraft/upstream/template/src/themes/palette-assets.json +1 -1
  353. package/lib/motion/shotcraft/upstream/template/src/themes/palette-assets.ts +24 -24
  354. package/lib/motion/shotcraft/upstream/template/src/themes/palettes.json +74 -74
  355. package/lib/motion/shotcraft/upstream/template/src/themes/visual-theme.tsx +91 -91
  356. package/lib/motion/shotcraft/upstream/template/src/workbench.ts +213 -213
  357. package/lib/motion/shotcraft/upstream/template/tsconfig.json +15 -15
  358. package/lib/motion/style-frames.js +47 -12
  359. package/lib/motion-project.js +22 -3
  360. package/lib/motion-render-worker.js +31 -9
  361. package/lib/routing/router.js +12 -1
  362. package/lib/style-kernel.js +16 -6
  363. package/lib/video-trace-pool.js +128 -128
  364. package/package.json +1 -1
  365. 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
+ };