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,123 +1,123 @@
1
- // corner-spotlight-reveal —— 对标 clickup-30.mp4 41.5–44.6s:
2
- // 黑场上,左上角径向聚光从小到大扩张,把白色 video-shotcraft 镜头库界面逐步"点亮",
3
- // 照到的区域显影、照不到的沉黑,最终全屏亮起。光即转场。
4
- import React from 'react';
5
- import { AbsoluteFill, useCurrentFrame, interpolate, Easing } from 'remotion';
6
-
7
- const FONT = '"Avenir Next", "Helvetica Neue", Helvetica, sans-serif';
8
-
9
- // 灰阶镜头库界面(video-shotcraft 的 Shots 页,自绘,替代真 UI)
10
- const InboxPanel: React.FC = () => (
11
- <div
12
- style={{
13
- width: 1920,
14
- height: 1080,
15
- background: '#f6f6f5',
16
- fontFamily: FONT,
17
- padding: '90px 120px',
18
- boxSizing: 'border-box',
19
- color: '#2c2c2c',
20
- }}
21
- >
22
- <div style={{ display: 'flex', alignItems: 'center', gap: 26 }}>
23
- <div style={{ fontSize: 118, fontWeight: 700, letterSpacing: -2 }}>Shots</div>
24
- <div
25
- style={{
26
- width: 0, height: 0, marginTop: 26,
27
- borderLeft: '16px solid transparent',
28
- borderRight: '16px solid transparent',
29
- borderTop: '20px solid #3a3a3a',
30
- }}
31
- />
32
- </div>
33
- <div style={{ display: 'flex', gap: 64, marginTop: 90, fontSize: 44, color: '#555' }}>
34
- <div style={{ background: '#e9e8f6', color: '#5b55c8', padding: '10px 34px', borderRadius: 14, fontWeight: 600 }}>All</div>
35
- <div style={{ padding: '10px 0' }}>Camera</div>
36
- <div style={{ padding: '10px 0' }}>Effects</div>
37
- <div style={{ padding: '10px 0' }}>Data</div>
38
- <div style={{ padding: '10px 0' }}>Outro</div>
39
- </div>
40
- {[0, 1, 2].map((row) => (
41
- <div key={row} style={{ display: 'flex', alignItems: 'center', gap: 30, marginTop: row === 0 ? 96 : 64 }}>
42
- <div style={{ width: 42, height: 42, border: '3px solid #c9c9c7', borderRadius: 10 }} />
43
- <div style={{ width: 14, height: 14, borderRadius: 7, background: '#5b55c8' }} />
44
- <div style={{ width: 56, height: 56, borderRadius: 28, background: '#efe4e2' }} />
45
- <div>
46
- <div style={{ display: 'flex', gap: 22, alignItems: 'center' }}>
47
- <div style={{ height: 22, width: 220 + ((row * 67) % 90), background: '#3f3f3f', borderRadius: 11 }} />
48
- <div style={{ width: 8, height: 8, borderRadius: 4, background: '#bbb' }} />
49
- <div style={{ height: 18, width: 260, background: '#c9c9c7', borderRadius: 9 }} />
50
- </div>
51
- <div style={{ display: 'flex', gap: 14, marginTop: 16 }}>
52
- <div style={{ height: 18, width: 300, background: '#8f8bd8', borderRadius: 9, opacity: 0.75 }} />
53
- <div style={{ height: 18, width: 340 - ((row * 91) % 120), background: '#d8d8d6', borderRadius: 9 }} />
54
- </div>
55
- </div>
56
- </div>
57
- ))}
58
- </div>
59
- );
60
-
61
- export const CornerSpotlightReveal: React.FC = () => {
62
- const frame = useCurrentFrame();
63
-
64
- // 聚光半径扩张:全程匀速(用户裁决"整个过程要匀速"——严格 linear,无缓动)
65
- // r+feather=1.85r 是光前沿;1.85*1300≈2400 恰在片尾盖满全屏对角,
66
- // 保证扩张动作占满全片时长而不是前 1/3 就饱和
67
- const r = interpolate(frame, [0, 100], [160, 1300], {
68
- extrapolateLeft: 'clamp',
69
- extrapolateRight: 'clamp',
70
- });
71
-
72
- // 光心沿左上角匀速游移(linear)
73
- const cx = interpolate(frame, [0, 96], [140, 420], { extrapolateRight: 'clamp' });
74
- const cy = interpolate(frame, [0, 96], [90, 260], { extrapolateRight: 'clamp' });
75
-
76
- // 软边宽度:扩张时边缘更羽化
77
- const feather = r * 0.85;
78
-
79
- // UI 轻微透视漂移(原片相机贴着界面缓推)
80
- const drift = interpolate(frame, [0, 100], [0, 1]);
81
- const scale = 1.75 - 0.28 * drift;
82
- const tx = -40 + 70 * drift;
83
- const ty = -30 + 50 * drift;
84
-
85
- const mask = `radial-gradient(circle ${r + feather}px at ${cx}px ${cy}px, rgba(255,255,255,1) ${Math.max(
86
- 0,
87
- ((r - feather * 0.25) / (r + feather)) * 100,
88
- )}%, rgba(255,255,255,0) 100%)`;
89
-
90
- return (
91
- <AbsoluteFill style={{ background: '#000' }}>
92
- <AbsoluteFill
93
- style={{
94
- WebkitMaskImage: mask,
95
- maskImage: mask,
96
- transform: `scale(${scale}) translate(${tx}px, ${ty}px) rotate(${-1.2 + 1.2 * drift}deg)`,
97
- transformOrigin: '18% 12%',
98
- }}
99
- >
100
- <InboxPanel />
101
- </AbsoluteFill>
102
- {/* 聚光自身的白热光晕(叠在界面上方,光心最亮) */}
103
- <div
104
- style={{
105
- position: 'absolute',
106
- left: cx - r * 0.7,
107
- top: cy - r * 0.7,
108
- width: r * 1.4,
109
- height: r * 1.4,
110
- borderRadius: '50%',
111
- background: 'radial-gradient(closest-side, rgba(255,255,255,0.85), rgba(255,255,255,0.25) 45%, transparent 75%)',
112
- filter: 'blur(26px)',
113
- opacity: interpolate(frame, [0, 10, 60, 90], [0, 0.9, 0.55, 0], {
114
- extrapolateRight: 'clamp',
115
- }),
116
- pointerEvents: 'none',
117
- }}
118
- />
119
- </AbsoluteFill>
120
- );
121
- };
122
-
123
- export const CORNER_SPOTLIGHT_REVEAL_DURATION = 130;
1
+ // corner-spotlight-reveal —— 对标 clickup-30.mp4 41.5–44.6s:
2
+ // 黑场上,左上角径向聚光从小到大扩张,把白色 video-shotcraft 镜头库界面逐步"点亮",
3
+ // 照到的区域显影、照不到的沉黑,最终全屏亮起。光即转场。
4
+ import React from 'react';
5
+ import { AbsoluteFill, useCurrentFrame, interpolate, Easing } from 'remotion';
6
+
7
+ const FONT = '"Avenir Next", "Helvetica Neue", Helvetica, sans-serif';
8
+
9
+ // 灰阶镜头库界面(video-shotcraft 的 Shots 页,自绘,替代真 UI)
10
+ const InboxPanel: React.FC = () => (
11
+ <div
12
+ style={{
13
+ width: 1920,
14
+ height: 1080,
15
+ background: '#f6f6f5',
16
+ fontFamily: FONT,
17
+ padding: '90px 120px',
18
+ boxSizing: 'border-box',
19
+ color: '#2c2c2c',
20
+ }}
21
+ >
22
+ <div style={{ display: 'flex', alignItems: 'center', gap: 26 }}>
23
+ <div style={{ fontSize: 118, fontWeight: 700, letterSpacing: -2 }}>Shots</div>
24
+ <div
25
+ style={{
26
+ width: 0, height: 0, marginTop: 26,
27
+ borderLeft: '16px solid transparent',
28
+ borderRight: '16px solid transparent',
29
+ borderTop: '20px solid #3a3a3a',
30
+ }}
31
+ />
32
+ </div>
33
+ <div style={{ display: 'flex', gap: 64, marginTop: 90, fontSize: 44, color: '#555' }}>
34
+ <div style={{ background: '#e9e8f6', color: '#5b55c8', padding: '10px 34px', borderRadius: 14, fontWeight: 600 }}>All</div>
35
+ <div style={{ padding: '10px 0' }}>Camera</div>
36
+ <div style={{ padding: '10px 0' }}>Effects</div>
37
+ <div style={{ padding: '10px 0' }}>Data</div>
38
+ <div style={{ padding: '10px 0' }}>Outro</div>
39
+ </div>
40
+ {[0, 1, 2].map((row) => (
41
+ <div key={row} style={{ display: 'flex', alignItems: 'center', gap: 30, marginTop: row === 0 ? 96 : 64 }}>
42
+ <div style={{ width: 42, height: 42, border: '3px solid #c9c9c7', borderRadius: 10 }} />
43
+ <div style={{ width: 14, height: 14, borderRadius: 7, background: '#5b55c8' }} />
44
+ <div style={{ width: 56, height: 56, borderRadius: 28, background: '#efe4e2' }} />
45
+ <div>
46
+ <div style={{ display: 'flex', gap: 22, alignItems: 'center' }}>
47
+ <div style={{ height: 22, width: 220 + ((row * 67) % 90), background: '#3f3f3f', borderRadius: 11 }} />
48
+ <div style={{ width: 8, height: 8, borderRadius: 4, background: '#bbb' }} />
49
+ <div style={{ height: 18, width: 260, background: '#c9c9c7', borderRadius: 9 }} />
50
+ </div>
51
+ <div style={{ display: 'flex', gap: 14, marginTop: 16 }}>
52
+ <div style={{ height: 18, width: 300, background: '#8f8bd8', borderRadius: 9, opacity: 0.75 }} />
53
+ <div style={{ height: 18, width: 340 - ((row * 91) % 120), background: '#d8d8d6', borderRadius: 9 }} />
54
+ </div>
55
+ </div>
56
+ </div>
57
+ ))}
58
+ </div>
59
+ );
60
+
61
+ export const CornerSpotlightReveal: React.FC = () => {
62
+ const frame = useCurrentFrame();
63
+
64
+ // 聚光半径扩张:全程匀速(用户裁决"整个过程要匀速"——严格 linear,无缓动)
65
+ // r+feather=1.85r 是光前沿;1.85*1300≈2400 恰在片尾盖满全屏对角,
66
+ // 保证扩张动作占满全片时长而不是前 1/3 就饱和
67
+ const r = interpolate(frame, [0, 100], [160, 1300], {
68
+ extrapolateLeft: 'clamp',
69
+ extrapolateRight: 'clamp',
70
+ });
71
+
72
+ // 光心沿左上角匀速游移(linear)
73
+ const cx = interpolate(frame, [0, 96], [140, 420], { extrapolateRight: 'clamp' });
74
+ const cy = interpolate(frame, [0, 96], [90, 260], { extrapolateRight: 'clamp' });
75
+
76
+ // 软边宽度:扩张时边缘更羽化
77
+ const feather = r * 0.85;
78
+
79
+ // UI 轻微透视漂移(原片相机贴着界面缓推)
80
+ const drift = interpolate(frame, [0, 100], [0, 1]);
81
+ const scale = 1.75 - 0.28 * drift;
82
+ const tx = -40 + 70 * drift;
83
+ const ty = -30 + 50 * drift;
84
+
85
+ const mask = `radial-gradient(circle ${r + feather}px at ${cx}px ${cy}px, rgba(255,255,255,1) ${Math.max(
86
+ 0,
87
+ ((r - feather * 0.25) / (r + feather)) * 100,
88
+ )}%, rgba(255,255,255,0) 100%)`;
89
+
90
+ return (
91
+ <AbsoluteFill style={{ background: '#000' }}>
92
+ <AbsoluteFill
93
+ style={{
94
+ WebkitMaskImage: mask,
95
+ maskImage: mask,
96
+ transform: `scale(${scale}) translate(${tx}px, ${ty}px) rotate(${-1.2 + 1.2 * drift}deg)`,
97
+ transformOrigin: '18% 12%',
98
+ }}
99
+ >
100
+ <InboxPanel />
101
+ </AbsoluteFill>
102
+ {/* 聚光自身的白热光晕(叠在界面上方,光心最亮) */}
103
+ <div
104
+ style={{
105
+ position: 'absolute',
106
+ left: cx - r * 0.7,
107
+ top: cy - r * 0.7,
108
+ width: r * 1.4,
109
+ height: r * 1.4,
110
+ borderRadius: '50%',
111
+ background: 'radial-gradient(closest-side, rgba(255,255,255,0.85), rgba(255,255,255,0.25) 45%, transparent 75%)',
112
+ filter: 'blur(26px)',
113
+ opacity: interpolate(frame, [0, 10, 60, 90], [0, 0.9, 0.55, 0], {
114
+ extrapolateRight: 'clamp',
115
+ }),
116
+ pointerEvents: 'none',
117
+ }}
118
+ />
119
+ </AbsoluteFill>
120
+ );
121
+ };
122
+
123
+ export const CORNER_SPOTLIGHT_REVEAL_DURATION = 130;
@@ -1,187 +1,187 @@
1
- // glow-wake-sleep-panel v3 —— 扫光方向改为从左向右(用户裁决):
2
- // 聚光灯从左向右"扫过"斜置面板;一条带辉光的紫色光线贴着 UI 顶边/边框/
3
- // logo 划过,光到即亮、光走即暗,尾段沉回黑暗(右缘残留蓝紫)。
4
- import React from 'react';
5
- import { AbsoluteFill, useCurrentFrame, interpolate } from 'remotion';
6
- import { BRAND, ShotcraftMark } from '../../_fixtures/Brand';
7
-
8
- const W = 1250;
9
- const H = 860;
10
- const R = 26;
11
-
12
- const ink = '#3a3a3a';
13
- const mid = '#9a9a98';
14
- const line = '#e2e2e0';
15
-
16
- const Row: React.FC<{ w: number; icon?: boolean }> = ({ w, icon = true }) => (
17
- <div style={{ display: 'flex', alignItems: 'center', gap: 12, height: 30 }}>
18
- {icon && <div style={{ width: 18, height: 18, borderRadius: 5, background: mid }} />}
19
- <div style={{ height: 11, width: w, background: '#c9c9c7', borderRadius: 6 }} />
20
- </div>
21
- );
22
-
23
- const TaskCard: React.FC<{ seed: number }> = ({ seed }) => (
24
- <div style={{ display: 'flex', flexDirection: 'column', gap: 9, padding: '14px 0' }}>
25
- <div style={{ height: 9, width: 150 + (seed % 3) * 22, background: line, borderRadius: 5 }} />
26
- <div style={{ height: 12, width: 190 + ((seed * 7) % 4) * 18, background: '#b9b9b7', borderRadius: 6 }} />
27
- <div style={{ width: 15, height: 11, background: '#d9d9d7', borderRadius: 2 }} />
28
- </div>
29
- );
30
-
31
- // 灰阶斜置面板(ClickUp 布局形:侧栏 + Review/Shipped 两列;侧栏顶是 video-shotcraft 标志 + 字标)
32
- const Panel: React.FC = () => (
33
- <div style={{
34
- width: W, height: H, background: '#f6f6f5', borderRadius: R,
35
- display: 'flex', overflow: 'hidden', boxSizing: 'border-box',
36
- }}>
37
- <div style={{ width: 300, borderRight: `2px solid ${line}`, padding: '30px 28px', boxSizing: 'border-box' }}>
38
- <div style={{ display: 'flex', alignItems: 'center', gap: 12, marginBottom: 34 }}>
39
- {/* 侧栏品牌位:video-shotcraft 标志 + 字标(扫光经过时描光) */}
40
- <ShotcraftMark size={30} tone="light" />
41
- <div style={{ fontFamily: BRAND.font, fontSize: 17, fontWeight: 700, letterSpacing: '0.03em', lineHeight: 1, color: ink, whiteSpace: 'nowrap' }}>{BRAND.name}</div>
42
- </div>
43
- <div style={{ display: 'flex', flexDirection: 'column', gap: 14 }}>
44
- <Row w={72} /><Row w={128} /><Row w={64} />
45
- </div>
46
- <div style={{ height: 13, width: 84, background: '#b3b3b1', borderRadius: 6, margin: '34px 0 16px' }} />
47
- <div style={{ display: 'flex', flexDirection: 'column', gap: 14 }}>
48
- <Row w={110} /><Row w={140} /><Row w={104} /><Row w={126} />
49
- </div>
50
- </div>
51
- <div style={{ flex: 1, padding: '30px 36px', boxSizing: 'border-box' }}>
52
- <div style={{ display: 'flex', alignItems: 'center', gap: 14, marginBottom: 30 }}>
53
- <div style={{ width: 24, height: 20, background: mid, borderRadius: 4 }} />
54
- <div style={{ height: 17, width: 250, background: '#6f6f6d', borderRadius: 8 }} />
55
- <div style={{ height: 12, width: 96, background: line, borderRadius: 6, marginLeft: 40 }} />
56
- <div style={{ height: 12, width: 76, background: line, borderRadius: 6 }} />
57
- </div>
58
- <div style={{ display: 'flex', gap: 44 }}>
59
- {[0, 1].map((col) => (
60
- <div key={col} style={{ flex: 1 }}>
61
- <div style={{ borderTop: `4px solid ${col === 0 ? '#b9a44c' : '#6b5bd6'}`, paddingTop: 16, display: 'flex', alignItems: 'center', gap: 10 }}>
62
- <div style={{ height: 14, width: 88, background: '#5a5a58', borderRadius: 7 }} />
63
- <div style={{ width: 22, height: 22, borderRadius: 11, border: `2px solid ${line}` }} />
64
- </div>
65
- {[0, 1, 2].map((i) => <TaskCard key={i} seed={col * 3 + i + 1} />)}
66
- </div>
67
- ))}
68
- </div>
69
- </div>
70
- </div>
71
- );
72
-
73
- // 贴边紫色光线(多层辉光:宽糊层+中层+亮芯),水平段,中心在 cx
74
- const EdgeStreak: React.FC<{ cx: number; y: number; len: number; opacity: number; vertical?: boolean }> =
75
- ({ cx, y, len, opacity, vertical = false }) => {
76
- const long = { position: 'absolute' as const, left: 0, top: 0, opacity };
77
- const grad = (c: string) => vertical
78
- ? `linear-gradient(180deg, rgba(0,0,0,0) 0%, ${c} 45%, ${c} 55%, rgba(0,0,0,0) 100%)`
79
- : `linear-gradient(90deg, rgba(0,0,0,0) 0%, ${c} 45%, ${c} 55%, rgba(0,0,0,0) 100%)`;
80
- if (vertical) {
81
- return (
82
- <div style={long}>
83
- <div style={{ position: 'absolute', left: y - 30, top: cx - len / 2, width: 60, height: len, background: grad('rgba(147,80,235,0.55)'), filter: 'blur(26px)' }} />
84
- <div style={{ position: 'absolute', left: y - 11, top: cx - len / 2, width: 22, height: len, background: grad('rgba(190,120,255,0.85)'), filter: 'blur(9px)' }} />
85
- <div style={{ position: 'absolute', left: y - 2.5, top: cx - len * 0.4, width: 5, height: len * 0.8, background: grad('#f0deff'), filter: 'blur(1.4px)' }} />
86
- </div>
87
- );
88
- }
89
- return (
90
- <div style={long}>
91
- <div style={{ position: 'absolute', left: cx - len / 2, top: y - 34, width: len, height: 68, background: grad('rgba(150,82,238,0.60)'), filter: 'blur(26px)' }} />
92
- <div style={{ position: 'absolute', left: cx - len / 2, top: y - 12, width: len, height: 24, background: grad('rgba(196,126,255,0.9)'), filter: 'blur(9px)' }} />
93
- <div style={{ position: 'absolute', left: cx - len * 0.4, top: y - 3, width: len * 0.8, height: 6, background: grad('#f4e4ff'), filter: 'blur(1.6px)' }} />
94
- {/* 粉色偏移层:截图里光带紫中带粉 */}
95
- <div style={{ position: 'absolute', left: cx - len * 0.3, top: y - 7, width: len * 0.6, height: 12, background: grad('rgba(240,150,230,0.75)'), filter: 'blur(5px)' }} />
96
- </div>
97
- );
98
- };
99
-
100
- export const GlowWakeSleepPanel: React.FC = () => {
101
- const frame = useCurrentFrame();
102
-
103
- // 聚光沿面板顶边从左向右匀速扫过(面板本地座标)
104
- const sx = interpolate(frame, [4, 120], [-260, W + 260], {
105
- extrapolateLeft: 'clamp', extrapolateRight: 'clamp',
106
- });
107
- const sy = 150; // 聚光照在面板上部
108
-
109
- // 全局明暗包络:醒 → 展示 → 睡
110
- const env = interpolate(frame, [0, 16, 100, 130], [0, 1, 1, 0], {
111
- extrapolateLeft: 'clamp', extrapolateRight: 'clamp',
112
- });
113
- // 尾段右缘残光:最后只剩右缘一线蓝紫
114
- const rightNear = Math.max(0, Math.min(1, (sx - (W - 420)) / 420));
115
- const tailBlue = interpolate(frame, [100, 116, 132], [0, 0.8, 0.25], {
116
- extrapolateLeft: 'clamp', extrapolateRight: 'clamp',
117
- });
118
-
119
- // logo 描光:聚光经过 logo(本地 x≈60)时点亮
120
- const logoGlow = Math.exp(-((sx - 60) ** 2) / (2 * 230 ** 2)) * env;
121
-
122
- // 摄影机慢漂移:面板随扫光从左上往右下走(对应扫光方向)
123
- const drift = interpolate(frame, [0, 132], [-150, 150]);
124
- const driftY = interpolate(frame, [0, 132], [-36, 36]);
125
-
126
- return (
127
- <AbsoluteFill style={{ background: '#040308', overflow: 'hidden' }}>
128
- <div style={{ position: 'absolute', inset: 0, perspective: 1700, perspectiveOrigin: '46% 40%' }}>
129
- <div style={{
130
- position: 'absolute', left: 400, top: 150,
131
- transform: `translate(${drift}px, ${driftY}px) scale(1.05) rotateY(-13deg) rotateX(9deg) rotateZ(-17deg)`,
132
- transformStyle: 'preserve-3d',
133
- }}>
134
- {/* 聚光环境雾光:跟随光头,泛在面板后黑场 */}
135
- <div style={{
136
- position: 'absolute', left: sx - 520, top: -300, width: 1040, height: 700,
137
- background: 'radial-gradient(ellipse at 50% 55%, rgba(110,62,205,0.42), rgba(110,62,205,0) 65%)',
138
- filter: 'blur(34px)', opacity: env,
139
- }} />
140
- {/* 后层重影面板(截图④⑤双层) */}
141
- <div style={{ position: 'absolute', left: -46, top: 34 }}>
142
- <div style={{ position: 'relative', filter: 'brightness(0.92)' }}>
143
- <Panel />
144
- {/* 重影面板同样受聚光范围控制 */}
145
- <div style={{
146
- position: 'absolute', inset: 0, borderRadius: R,
147
- background: `radial-gradient(circle 680px at ${sx - 46}px ${sy + 34}px, rgba(4,3,8,${1 - 0.45 * env}) 0%, rgba(4,3,8,${1 - 0.14 * env}) 55%, rgba(4,3,8,0.99) 88%)`,
148
- }} />
149
- </div>
150
- </div>
151
- {/* 面板本体:聚光范围内显影,范围外沉黑 */}
152
- <div style={{ position: 'relative' }}>
153
- <Panel />
154
- <div style={{
155
- position: 'absolute', inset: 0, borderRadius: R,
156
- background: `radial-gradient(circle 640px at ${sx}px ${sy}px, rgba(4,3,8,${0.12 * (1 - env)}) 0%, rgba(4,3,8,${1 - 0.72 * env}) 58%, rgba(4,3,8,0.985) 92%)`,
157
- }} />
158
- {/* 尾段右缘蓝紫残光罩 */}
159
- <div style={{
160
- position: 'absolute', inset: 0, borderRadius: R,
161
- background: 'linear-gradient(260deg, rgba(120,130,235,0.30) 0%, rgba(120,130,235,0) 16%)',
162
- opacity: tailBlue,
163
- }} />
164
- </div>
165
- {/* 贴顶边划过的紫色光线(本体) */}
166
- <EdgeStreak cx={sx} y={-2} len={980} opacity={env} />
167
- {/* 右缘竖直光线:聚光接近右侧时点亮,尾段转蓝紫 */}
168
- <EdgeStreak cx={260} y={W + 2} len={620} opacity={Math.max(rightNear * env, tailBlue * 0.9)} vertical />
169
- {/* logo 一圈描光(截图⑤:光经过 logo 时) */}
170
- <div style={{
171
- position: 'absolute', left: 8, top: 12, width: 222, height: 66, borderRadius: 16, // 宽度包住标志 + 字标
172
- boxShadow: '0 0 26px 8px rgba(196,126,255,0.75), 0 0 60px 22px rgba(150,82,238,0.4)',
173
- opacity: logoGlow,
174
- }} />
175
- {/* 光头本体眩光:贴着顶边的亮团 */}
176
- <div style={{
177
- position: 'absolute', left: sx - 190, top: -84, width: 380, height: 170,
178
- background: 'radial-gradient(ellipse, rgba(236,205,255,0.95), rgba(180,110,250,0.35) 45%, rgba(0,0,0,0) 72%)',
179
- filter: 'blur(12px)', opacity: env * 0.95,
180
- }} />
181
- </div>
182
- </div>
183
- </AbsoluteFill>
184
- );
185
- };
186
-
187
- export const GLOW_WAKE_SLEEP_PANEL_DURATION = 140;
1
+ // glow-wake-sleep-panel v3 —— 扫光方向改为从左向右(用户裁决):
2
+ // 聚光灯从左向右"扫过"斜置面板;一条带辉光的紫色光线贴着 UI 顶边/边框/
3
+ // logo 划过,光到即亮、光走即暗,尾段沉回黑暗(右缘残留蓝紫)。
4
+ import React from 'react';
5
+ import { AbsoluteFill, useCurrentFrame, interpolate } from 'remotion';
6
+ import { BRAND, ShotcraftMark } from '../../_fixtures/Brand';
7
+
8
+ const W = 1250;
9
+ const H = 860;
10
+ const R = 26;
11
+
12
+ const ink = '#3a3a3a';
13
+ const mid = '#9a9a98';
14
+ const line = '#e2e2e0';
15
+
16
+ const Row: React.FC<{ w: number; icon?: boolean }> = ({ w, icon = true }) => (
17
+ <div style={{ display: 'flex', alignItems: 'center', gap: 12, height: 30 }}>
18
+ {icon && <div style={{ width: 18, height: 18, borderRadius: 5, background: mid }} />}
19
+ <div style={{ height: 11, width: w, background: '#c9c9c7', borderRadius: 6 }} />
20
+ </div>
21
+ );
22
+
23
+ const TaskCard: React.FC<{ seed: number }> = ({ seed }) => (
24
+ <div style={{ display: 'flex', flexDirection: 'column', gap: 9, padding: '14px 0' }}>
25
+ <div style={{ height: 9, width: 150 + (seed % 3) * 22, background: line, borderRadius: 5 }} />
26
+ <div style={{ height: 12, width: 190 + ((seed * 7) % 4) * 18, background: '#b9b9b7', borderRadius: 6 }} />
27
+ <div style={{ width: 15, height: 11, background: '#d9d9d7', borderRadius: 2 }} />
28
+ </div>
29
+ );
30
+
31
+ // 灰阶斜置面板(ClickUp 布局形:侧栏 + Review/Shipped 两列;侧栏顶是 video-shotcraft 标志 + 字标)
32
+ const Panel: React.FC = () => (
33
+ <div style={{
34
+ width: W, height: H, background: '#f6f6f5', borderRadius: R,
35
+ display: 'flex', overflow: 'hidden', boxSizing: 'border-box',
36
+ }}>
37
+ <div style={{ width: 300, borderRight: `2px solid ${line}`, padding: '30px 28px', boxSizing: 'border-box' }}>
38
+ <div style={{ display: 'flex', alignItems: 'center', gap: 12, marginBottom: 34 }}>
39
+ {/* 侧栏品牌位:video-shotcraft 标志 + 字标(扫光经过时描光) */}
40
+ <ShotcraftMark size={30} tone="light" />
41
+ <div style={{ fontFamily: BRAND.font, fontSize: 17, fontWeight: 700, letterSpacing: '0.03em', lineHeight: 1, color: ink, whiteSpace: 'nowrap' }}>{BRAND.name}</div>
42
+ </div>
43
+ <div style={{ display: 'flex', flexDirection: 'column', gap: 14 }}>
44
+ <Row w={72} /><Row w={128} /><Row w={64} />
45
+ </div>
46
+ <div style={{ height: 13, width: 84, background: '#b3b3b1', borderRadius: 6, margin: '34px 0 16px' }} />
47
+ <div style={{ display: 'flex', flexDirection: 'column', gap: 14 }}>
48
+ <Row w={110} /><Row w={140} /><Row w={104} /><Row w={126} />
49
+ </div>
50
+ </div>
51
+ <div style={{ flex: 1, padding: '30px 36px', boxSizing: 'border-box' }}>
52
+ <div style={{ display: 'flex', alignItems: 'center', gap: 14, marginBottom: 30 }}>
53
+ <div style={{ width: 24, height: 20, background: mid, borderRadius: 4 }} />
54
+ <div style={{ height: 17, width: 250, background: '#6f6f6d', borderRadius: 8 }} />
55
+ <div style={{ height: 12, width: 96, background: line, borderRadius: 6, marginLeft: 40 }} />
56
+ <div style={{ height: 12, width: 76, background: line, borderRadius: 6 }} />
57
+ </div>
58
+ <div style={{ display: 'flex', gap: 44 }}>
59
+ {[0, 1].map((col) => (
60
+ <div key={col} style={{ flex: 1 }}>
61
+ <div style={{ borderTop: `4px solid ${col === 0 ? '#b9a44c' : '#6b5bd6'}`, paddingTop: 16, display: 'flex', alignItems: 'center', gap: 10 }}>
62
+ <div style={{ height: 14, width: 88, background: '#5a5a58', borderRadius: 7 }} />
63
+ <div style={{ width: 22, height: 22, borderRadius: 11, border: `2px solid ${line}` }} />
64
+ </div>
65
+ {[0, 1, 2].map((i) => <TaskCard key={i} seed={col * 3 + i + 1} />)}
66
+ </div>
67
+ ))}
68
+ </div>
69
+ </div>
70
+ </div>
71
+ );
72
+
73
+ // 贴边紫色光线(多层辉光:宽糊层+中层+亮芯),水平段,中心在 cx
74
+ const EdgeStreak: React.FC<{ cx: number; y: number; len: number; opacity: number; vertical?: boolean }> =
75
+ ({ cx, y, len, opacity, vertical = false }) => {
76
+ const long = { position: 'absolute' as const, left: 0, top: 0, opacity };
77
+ const grad = (c: string) => vertical
78
+ ? `linear-gradient(180deg, rgba(0,0,0,0) 0%, ${c} 45%, ${c} 55%, rgba(0,0,0,0) 100%)`
79
+ : `linear-gradient(90deg, rgba(0,0,0,0) 0%, ${c} 45%, ${c} 55%, rgba(0,0,0,0) 100%)`;
80
+ if (vertical) {
81
+ return (
82
+ <div style={long}>
83
+ <div style={{ position: 'absolute', left: y - 30, top: cx - len / 2, width: 60, height: len, background: grad('rgba(147,80,235,0.55)'), filter: 'blur(26px)' }} />
84
+ <div style={{ position: 'absolute', left: y - 11, top: cx - len / 2, width: 22, height: len, background: grad('rgba(190,120,255,0.85)'), filter: 'blur(9px)' }} />
85
+ <div style={{ position: 'absolute', left: y - 2.5, top: cx - len * 0.4, width: 5, height: len * 0.8, background: grad('#f0deff'), filter: 'blur(1.4px)' }} />
86
+ </div>
87
+ );
88
+ }
89
+ return (
90
+ <div style={long}>
91
+ <div style={{ position: 'absolute', left: cx - len / 2, top: y - 34, width: len, height: 68, background: grad('rgba(150,82,238,0.60)'), filter: 'blur(26px)' }} />
92
+ <div style={{ position: 'absolute', left: cx - len / 2, top: y - 12, width: len, height: 24, background: grad('rgba(196,126,255,0.9)'), filter: 'blur(9px)' }} />
93
+ <div style={{ position: 'absolute', left: cx - len * 0.4, top: y - 3, width: len * 0.8, height: 6, background: grad('#f4e4ff'), filter: 'blur(1.6px)' }} />
94
+ {/* 粉色偏移层:截图里光带紫中带粉 */}
95
+ <div style={{ position: 'absolute', left: cx - len * 0.3, top: y - 7, width: len * 0.6, height: 12, background: grad('rgba(240,150,230,0.75)'), filter: 'blur(5px)' }} />
96
+ </div>
97
+ );
98
+ };
99
+
100
+ export const GlowWakeSleepPanel: React.FC = () => {
101
+ const frame = useCurrentFrame();
102
+
103
+ // 聚光沿面板顶边从左向右匀速扫过(面板本地座标)
104
+ const sx = interpolate(frame, [4, 120], [-260, W + 260], {
105
+ extrapolateLeft: 'clamp', extrapolateRight: 'clamp',
106
+ });
107
+ const sy = 150; // 聚光照在面板上部
108
+
109
+ // 全局明暗包络:醒 → 展示 → 睡
110
+ const env = interpolate(frame, [0, 16, 100, 130], [0, 1, 1, 0], {
111
+ extrapolateLeft: 'clamp', extrapolateRight: 'clamp',
112
+ });
113
+ // 尾段右缘残光:最后只剩右缘一线蓝紫
114
+ const rightNear = Math.max(0, Math.min(1, (sx - (W - 420)) / 420));
115
+ const tailBlue = interpolate(frame, [100, 116, 132], [0, 0.8, 0.25], {
116
+ extrapolateLeft: 'clamp', extrapolateRight: 'clamp',
117
+ });
118
+
119
+ // logo 描光:聚光经过 logo(本地 x≈60)时点亮
120
+ const logoGlow = Math.exp(-((sx - 60) ** 2) / (2 * 230 ** 2)) * env;
121
+
122
+ // 摄影机慢漂移:面板随扫光从左上往右下走(对应扫光方向)
123
+ const drift = interpolate(frame, [0, 132], [-150, 150]);
124
+ const driftY = interpolate(frame, [0, 132], [-36, 36]);
125
+
126
+ return (
127
+ <AbsoluteFill style={{ background: '#040308', overflow: 'hidden' }}>
128
+ <div style={{ position: 'absolute', inset: 0, perspective: 1700, perspectiveOrigin: '46% 40%' }}>
129
+ <div style={{
130
+ position: 'absolute', left: 400, top: 150,
131
+ transform: `translate(${drift}px, ${driftY}px) scale(1.05) rotateY(-13deg) rotateX(9deg) rotateZ(-17deg)`,
132
+ transformStyle: 'preserve-3d',
133
+ }}>
134
+ {/* 聚光环境雾光:跟随光头,泛在面板后黑场 */}
135
+ <div style={{
136
+ position: 'absolute', left: sx - 520, top: -300, width: 1040, height: 700,
137
+ background: 'radial-gradient(ellipse at 50% 55%, rgba(110,62,205,0.42), rgba(110,62,205,0) 65%)',
138
+ filter: 'blur(34px)', opacity: env,
139
+ }} />
140
+ {/* 后层重影面板(截图④⑤双层) */}
141
+ <div style={{ position: 'absolute', left: -46, top: 34 }}>
142
+ <div style={{ position: 'relative', filter: 'brightness(0.92)' }}>
143
+ <Panel />
144
+ {/* 重影面板同样受聚光范围控制 */}
145
+ <div style={{
146
+ position: 'absolute', inset: 0, borderRadius: R,
147
+ background: `radial-gradient(circle 680px at ${sx - 46}px ${sy + 34}px, rgba(4,3,8,${1 - 0.45 * env}) 0%, rgba(4,3,8,${1 - 0.14 * env}) 55%, rgba(4,3,8,0.99) 88%)`,
148
+ }} />
149
+ </div>
150
+ </div>
151
+ {/* 面板本体:聚光范围内显影,范围外沉黑 */}
152
+ <div style={{ position: 'relative' }}>
153
+ <Panel />
154
+ <div style={{
155
+ position: 'absolute', inset: 0, borderRadius: R,
156
+ background: `radial-gradient(circle 640px at ${sx}px ${sy}px, rgba(4,3,8,${0.12 * (1 - env)}) 0%, rgba(4,3,8,${1 - 0.72 * env}) 58%, rgba(4,3,8,0.985) 92%)`,
157
+ }} />
158
+ {/* 尾段右缘蓝紫残光罩 */}
159
+ <div style={{
160
+ position: 'absolute', inset: 0, borderRadius: R,
161
+ background: 'linear-gradient(260deg, rgba(120,130,235,0.30) 0%, rgba(120,130,235,0) 16%)',
162
+ opacity: tailBlue,
163
+ }} />
164
+ </div>
165
+ {/* 贴顶边划过的紫色光线(本体) */}
166
+ <EdgeStreak cx={sx} y={-2} len={980} opacity={env} />
167
+ {/* 右缘竖直光线:聚光接近右侧时点亮,尾段转蓝紫 */}
168
+ <EdgeStreak cx={260} y={W + 2} len={620} opacity={Math.max(rightNear * env, tailBlue * 0.9)} vertical />
169
+ {/* logo 一圈描光(截图⑤:光经过 logo 时) */}
170
+ <div style={{
171
+ position: 'absolute', left: 8, top: 12, width: 222, height: 66, borderRadius: 16, // 宽度包住标志 + 字标
172
+ boxShadow: '0 0 26px 8px rgba(196,126,255,0.75), 0 0 60px 22px rgba(150,82,238,0.4)',
173
+ opacity: logoGlow,
174
+ }} />
175
+ {/* 光头本体眩光:贴着顶边的亮团 */}
176
+ <div style={{
177
+ position: 'absolute', left: sx - 190, top: -84, width: 380, height: 170,
178
+ background: 'radial-gradient(ellipse, rgba(236,205,255,0.95), rgba(180,110,250,0.35) 45%, rgba(0,0,0,0) 72%)',
179
+ filter: 'blur(12px)', opacity: env * 0.95,
180
+ }} />
181
+ </div>
182
+ </div>
183
+ </AbsoluteFill>
184
+ );
185
+ };
186
+
187
+ export const GLOW_WAKE_SLEEP_PANEL_DURATION = 140;