hyper-animator-codex 0.7.1 → 0.8.0

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 (318) hide show
  1. package/README.md +51 -3
  2. package/bin/hyper-animator-codex.mjs +1 -1
  3. package/lib/minimax-config.mjs +3 -3
  4. package/package.json +1 -1
  5. package/skills/hyper-animator-codex/SKILL.md +58 -20
  6. package/skills/hyper-animator-codex/agents/openai.yaml +2 -2
  7. package/skills/hyper-animator-codex/contracts/shot-plan.schema.json +214 -0
  8. package/skills/hyper-animator-codex/contracts/workflow-policy.json +85 -0
  9. package/skills/hyper-animator-codex/references/HyperFrames-AI-Generation-Patterns-codex.md +788 -0
  10. package/skills/hyper-animator-codex/references/beat-sync-workflow.md +7 -0
  11. package/skills/hyper-animator-codex/references/examples/shot-plan-dual-catalog.json +69 -0
  12. package/skills/hyper-animator-codex/references/hyperframes-agent-pseudocode.ts +1 -1
  13. package/skills/hyper-animator-codex/references/hyperframes-catalog-map.json +97 -230
  14. package/skills/hyper-animator-codex/references/hyperframes-intent-workflow.md +23 -7
  15. package/skills/hyper-animator-codex/references/minimax-music-workflow.md +24 -4
  16. package/skills/hyper-animator-codex/references/narration-audio-workflow.md +31 -1
  17. package/skills/hyper-animator-codex/references/shotcraft/LICENSE +202 -0
  18. package/skills/hyper-animator-codex/references/shotcraft/cards/ai-stream-response/README.md +46 -0
  19. package/skills/hyper-animator-codex/references/shotcraft/cards/autolayout-gap-dial/README.md +53 -0
  20. package/skills/hyper-animator-codex/references/shotcraft/cards/beat-cut-moves/README.md +54 -0
  21. package/skills/hyper-animator-codex/references/shotcraft/cards/beat-step-list-theme-cycle/README.md +59 -0
  22. package/skills/hyper-animator-codex/references/shotcraft/cards/before-after-slider-scrub/README.md +47 -0
  23. package/skills/hyper-animator-codex/references/shotcraft/cards/bottom-push-stack-wipe/README.md +58 -0
  24. package/skills/hyper-animator-codex/references/shotcraft/cards/brand-frame-snap/README.md +51 -0
  25. package/skills/hyper-animator-codex/references/shotcraft/cards/brand-ink-open/README.md +35 -0
  26. package/skills/hyper-animator-codex/references/shotcraft/cards/bubble-swarm-takeover/README.md +62 -0
  27. package/skills/hyper-animator-codex/references/shotcraft/cards/canvas-materialize-moves/README.md +55 -0
  28. package/skills/hyper-animator-codex/references/shotcraft/cards/card-flip-reveal/README.md +50 -0
  29. package/skills/hyper-animator-codex/references/shotcraft/cards/card-flock-tumble/README.md +54 -0
  30. package/skills/hyper-animator-codex/references/shotcraft/cards/cel-flash-stomp/README.md +54 -0
  31. package/skills/hyper-animator-codex/references/shotcraft/cards/chart-live-moves/README.md +51 -0
  32. package/skills/hyper-animator-codex/references/shotcraft/cards/circle-match-iris/README.md +53 -0
  33. package/skills/hyper-animator-codex/references/shotcraft/cards/cloner-depth-echo/README.md +38 -0
  34. package/skills/hyper-animator-codex/references/shotcraft/cards/collab-cursor-moves/README.md +48 -0
  35. package/skills/hyper-animator-codex/references/shotcraft/cards/color-block-step-wipe/README.md +54 -0
  36. package/skills/hyper-animator-codex/references/shotcraft/cards/command-palette-summon/README.md +45 -0
  37. package/skills/hyper-animator-codex/references/shotcraft/cards/crane-rise-reveal/README.md +47 -0
  38. package/skills/hyper-animator-codex/references/shotcraft/cards/crash-zoom-punch/README.md +38 -0
  39. package/skills/hyper-animator-codex/references/shotcraft/cards/dataviz-landscape-open/README.md +54 -0
  40. package/skills/hyper-animator-codex/references/shotcraft/cards/deck-deal-flyin/README.md +45 -0
  41. package/skills/hyper-animator-codex/references/shotcraft/cards/depth-layer-moves/README.md +40 -0
  42. package/skills/hyper-animator-codex/references/shotcraft/cards/document-typewriter-reveal/README.md +40 -0
  43. package/skills/hyper-animator-codex/references/shotcraft/cards/draw-svg-trace/README.md +50 -0
  44. package/skills/hyper-animator-codex/references/shotcraft/cards/edit-hook-moves/README.md +38 -0
  45. package/skills/hyper-animator-codex/references/shotcraft/cards/element-body-moves/README.md +49 -0
  46. package/skills/hyper-animator-codex/references/shotcraft/cards/fui-hud-moves/README.md +44 -0
  47. package/skills/hyper-animator-codex/references/shotcraft/cards/gauge-readout-moves/README.md +45 -0
  48. package/skills/hyper-animator-codex/references/shotcraft/cards/glow-flyline-moves/README.md +51 -0
  49. package/skills/hyper-animator-codex/references/shotcraft/cards/gradient-word-sweep/README.md +49 -0
  50. package/skills/hyper-animator-codex/references/shotcraft/cards/graze-face-tour/README.md +56 -0
  51. package/skills/hyper-animator-codex/references/shotcraft/cards/hashtag-to-pill-materialize/README.md +57 -0
  52. package/skills/hyper-animator-codex/references/shotcraft/cards/hires-rasterize-3d-text/README.md +34 -0
  53. package/skills/hyper-animator-codex/references/shotcraft/cards/icon-field-colorize/README.md +53 -0
  54. package/skills/hyper-animator-codex/references/shotcraft/cards/icon-performance-moves/README.md +46 -0
  55. package/skills/hyper-animator-codex/references/shotcraft/cards/impact-feedback/README.md +50 -0
  56. package/skills/hyper-animator-codex/references/shotcraft/cards/input-trigger-moves/README.md +49 -0
  57. package/skills/hyper-animator-codex/references/shotcraft/cards/integration-hub-map/README.md +54 -0
  58. package/skills/hyper-animator-codex/references/shotcraft/cards/letterspace-materialize/README.md +52 -0
  59. package/skills/hyper-animator-codex/references/shotcraft/cards/light-play-moves/README.md +49 -0
  60. package/skills/hyper-animator-codex/references/shotcraft/cards/line-boil/README.md +52 -0
  61. package/skills/hyper-animator-codex/references/shotcraft/cards/line-carry-transition/README.md +52 -0
  62. package/skills/hyper-animator-codex/references/shotcraft/cards/list-stack-press/README.md +43 -0
  63. package/skills/hyper-animator-codex/references/shotcraft/cards/magician-card-flourish/README.md +63 -0
  64. package/skills/hyper-animator-codex/references/shotcraft/cards/marker-underline-title/README.md +48 -0
  65. package/skills/hyper-animator-codex/references/shotcraft/cards/montage-rhythm-moves/README.md +55 -0
  66. package/skills/hyper-animator-codex/references/shotcraft/cards/morph-from-primitive/README.md +51 -0
  67. package/skills/hyper-animator-codex/references/shotcraft/cards/neon-frame-forerun/README.md +50 -0
  68. package/skills/hyper-animator-codex/references/shotcraft/cards/neon-frame-orbit-drop/README.md +50 -0
  69. package/skills/hyper-animator-codex/references/shotcraft/cards/neon-triple-marquee/README.md +55 -0
  70. package/skills/hyper-animator-codex/references/shotcraft/cards/odometer-digit-roll/README.md +54 -0
  71. package/skills/hyper-animator-codex/references/shotcraft/cards/outro-group-photo-launch/README.md +39 -0
  72. package/skills/hyper-animator-codex/references/shotcraft/cards/overhead-camera-moves/README.md +50 -0
  73. package/skills/hyper-animator-codex/references/shotcraft/cards/page-turn-transitions/README.md +48 -0
  74. package/skills/hyper-animator-codex/references/shotcraft/cards/page-waterfall-wall/README.md +52 -0
  75. package/skills/hyper-animator-codex/references/shotcraft/cards/panel-grid-moves/README.md +52 -0
  76. package/skills/hyper-animator-codex/references/shotcraft/cards/paper-craft-moves/README.md +46 -0
  77. package/skills/hyper-animator-codex/references/shotcraft/cards/paper-plane-messenger/README.md +62 -0
  78. package/skills/hyper-animator-codex/references/shotcraft/cards/paper-title-card/README.md +36 -0
  79. package/skills/hyper-animator-codex/references/shotcraft/cards/particle-celebrate-hits/README.md +42 -0
  80. package/skills/hyper-animator-codex/references/shotcraft/cards/particle-sand-fill/README.md +39 -0
  81. package/skills/hyper-animator-codex/references/shotcraft/cards/pill-slot-cycle/README.md +57 -0
  82. package/skills/hyper-animator-codex/references/shotcraft/cards/print-texture-transitions/README.md +40 -0
  83. package/skills/hyper-animator-codex/references/shotcraft/cards/rhythm-interrupt-moves/README.md +44 -0
  84. package/skills/hyper-animator-codex/references/shotcraft/cards/riso-print-hits/README.md +54 -0
  85. package/skills/hyper-animator-codex/references/shotcraft/cards/row-embed/README.md +36 -0
  86. package/skills/hyper-animator-codex/references/shotcraft/cards/runway-ground-skim/README.md +52 -0
  87. package/skills/hyper-animator-codex/references/shotcraft/cards/sakuga-timing-shift/README.md +50 -0
  88. package/skills/hyper-animator-codex/references/shotcraft/cards/scene-locked-title/README.md +43 -0
  89. package/skills/hyper-animator-codex/references/shotcraft/cards/scroll-brake-moves/README.md +45 -0
  90. package/skills/hyper-animator-codex/references/shotcraft/cards/segmented-thumb-hero/README.md +57 -0
  91. package/skills/hyper-animator-codex/references/shotcraft/cards/shot-transitions/README.md +60 -0
  92. package/skills/hyper-animator-codex/references/shotcraft/cards/skeleton-reveal/README.md +54 -0
  93. package/skills/hyper-animator-codex/references/shotcraft/cards/slam-entrance-moves/README.md +53 -0
  94. package/skills/hyper-animator-codex/references/shotcraft/cards/smear-multiples/README.md +49 -0
  95. package/skills/hyper-animator-codex/references/shotcraft/cards/space-camera-moves/README.md +53 -0
  96. package/skills/hyper-animator-codex/references/shotcraft/cards/spectrum-morph-ui/README.md +50 -0
  97. package/skills/hyper-animator-codex/references/shotcraft/cards/speed-ramp-freeze/README.md +42 -0
  98. package/skills/hyper-animator-codex/references/shotcraft/cards/split-flap-title/README.md +52 -0
  99. package/skills/hyper-animator-codex/references/shotcraft/cards/spotlight-hero-card/README.md +39 -0
  100. package/skills/hyper-animator-codex/references/shotcraft/cards/spotlight-sweep-moves/README.md +51 -0
  101. package/skills/hyper-animator-codex/references/shotcraft/cards/steep-tilt-glide/README.md +53 -0
  102. package/skills/hyper-animator-codex/references/shotcraft/cards/stroke-segment-build/README.md +43 -0
  103. package/skills/hyper-animator-codex/references/shotcraft/cards/tear-streak-transitions/README.md +43 -0
  104. package/skills/hyper-animator-codex/references/shotcraft/cards/tension-camera-moves/README.md +55 -0
  105. package/skills/hyper-animator-codex/references/shotcraft/cards/text-as-mask/README.md +50 -0
  106. package/skills/hyper-animator-codex/references/shotcraft/cards/text-column-converge/README.md +55 -0
  107. package/skills/hyper-animator-codex/references/shotcraft/cards/theme-switch-moves/README.md +44 -0
  108. package/skills/hyper-animator-codex/references/shotcraft/cards/timeline-travel/README.md +43 -0
  109. package/skills/hyper-animator-codex/references/shotcraft/cards/title-demote-to-label/README.md +58 -0
  110. package/skills/hyper-animator-codex/references/shotcraft/cards/trailer-grammar-moves/README.md +51 -0
  111. package/skills/hyper-animator-codex/references/shotcraft/cards/transition-hidden-cut/README.md +52 -0
  112. package/skills/hyper-animator-codex/references/shotcraft/cards/transition-travel/README.md +48 -0
  113. package/skills/hyper-animator-codex/references/shotcraft/cards/type-and-filter/README.md +37 -0
  114. package/skills/hyper-animator-codex/references/shotcraft/cards/type-assembly-moves/README.md +50 -0
  115. package/skills/hyper-animator-codex/references/shotcraft/cards/type-entrance-moves/README.md +46 -0
  116. package/skills/hyper-animator-codex/references/shotcraft/cards/type-rhythm-sync/README.md +47 -0
  117. package/skills/hyper-animator-codex/references/shotcraft/cards/typewriter-moves/README.md +50 -0
  118. package/skills/hyper-animator-codex/references/shotcraft/cards/ui-strip-away-outro/README.md +63 -0
  119. package/skills/hyper-animator-codex/references/shotcraft/cards/ui-to-brand-morph/README.md +52 -0
  120. package/skills/hyper-animator-codex/references/shotcraft/cards/voice-waveform-live/README.md +52 -0
  121. package/skills/hyper-animator-codex/references/shotcraft/cards/wall-reveal-moves/README.md +53 -0
  122. package/skills/hyper-animator-codex/references/shotcraft/cards/wipe-transitions/README.md +47 -0
  123. package/skills/hyper-animator-codex/references/shotcraft/cards/word-relay-filmstrip/README.md +50 -0
  124. package/skills/hyper-animator-codex/references/shotcraft/catalog.json +3946 -0
  125. package/skills/hyper-animator-codex/references/shotcraft/references/aesthetic-rules.md +157 -0
  126. package/skills/hyper-animator-codex/references/shotcraft/references/final-review.md +107 -0
  127. package/skills/hyper-animator-codex/references/shotcraft/references/guided-free-creation.md +197 -0
  128. package/skills/hyper-animator-codex/references/shotcraft/references/music-beat-sync.md +125 -0
  129. package/skills/hyper-animator-codex/references/shotcraft/references/pipeline.md +357 -0
  130. package/skills/hyper-animator-codex/references/shotcraft/references/sound-design.md +126 -0
  131. package/skills/hyper-animator-codex/references/shotcraft/source/assets/lib/Caption.tsx +50 -0
  132. package/skills/hyper-animator-codex/references/shotcraft/source/assets/lib/DigitRoll.tsx +45 -0
  133. package/skills/hyper-animator-codex/references/shotcraft/source/assets/lib/FlashCut.tsx +20 -0
  134. package/skills/hyper-animator-codex/references/shotcraft/source/assets/lib/FlatPanel.tsx +65 -0
  135. package/skills/hyper-animator-codex/references/shotcraft/source/assets/lib/PageCam.tsx +151 -0
  136. package/skills/hyper-animator-codex/references/shotcraft/source/assets/lib/VerticalTicker.tsx +129 -0
  137. package/skills/hyper-animator-codex/references/shotcraft/source/assets/lib/helpers/camera.tsx +75 -0
  138. package/skills/hyper-animator-codex/references/shotcraft/source/assets/lib/helpers/motion.ts +40 -0
  139. package/skills/hyper-animator-codex/references/shotcraft/source/assets/lib/helpers/rand.ts +11 -0
  140. package/skills/hyper-animator-codex/references/shotcraft/source/assets/lib/helpers/shake.ts +10 -0
  141. package/skills/hyper-animator-codex/references/shotcraft/source/demos/_fixtures/Fixtures.tsx +83 -0
  142. package/skills/hyper-animator-codex/references/shotcraft/source/demos/ai-stream-response/StreamResponse.tsx +146 -0
  143. package/skills/hyper-animator-codex/references/shotcraft/source/demos/autolayout-gap-dial/AutolayoutGapDial.tsx +174 -0
  144. package/skills/hyper-animator-codex/references/shotcraft/source/demos/beat-cut-moves/BeatCutAccelerando.tsx +77 -0
  145. package/skills/hyper-animator-codex/references/shotcraft/source/demos/beat-cut-moves/PaparazziFlash.tsx +115 -0
  146. package/skills/hyper-animator-codex/references/shotcraft/source/demos/beat-step-list-theme-cycle/BeatStepListThemeCycle.tsx +98 -0
  147. package/skills/hyper-animator-codex/references/shotcraft/source/demos/before-after-slider-scrub/BeforeAfterSliderScrub.tsx +99 -0
  148. package/skills/hyper-animator-codex/references/shotcraft/source/demos/bottom-push-stack-wipe/BottomPushStackWipe.tsx +79 -0
  149. package/skills/hyper-animator-codex/references/shotcraft/source/demos/brand-frame-snap/BrandFrameSnap.tsx +110 -0
  150. package/skills/hyper-animator-codex/references/shotcraft/source/demos/bubble-swarm-takeover/BubbleSwarmTakeover.tsx +189 -0
  151. package/skills/hyper-animator-codex/references/shotcraft/source/demos/canvas-materialize-moves/DiagramCascadeBuild.tsx +172 -0
  152. package/skills/hyper-animator-codex/references/shotcraft/source/demos/canvas-materialize-moves/PanelToCanvasMaterialize.tsx +254 -0
  153. package/skills/hyper-animator-codex/references/shotcraft/source/demos/card-flip-reveal/CardFlipReveal.tsx +139 -0
  154. package/skills/hyper-animator-codex/references/shotcraft/source/demos/card-flock-tumble/CardFlockTumble.tsx +382 -0
  155. package/skills/hyper-animator-codex/references/shotcraft/source/demos/cel-flash-stomp/CelFlashStomp.tsx +111 -0
  156. package/skills/hyper-animator-codex/references/shotcraft/source/demos/chart-live-moves/AxisRescaleShockV2.tsx +282 -0
  157. package/skills/hyper-animator-codex/references/shotcraft/source/demos/chart-live-moves/OscilloscopeStreamV2.tsx +227 -0
  158. package/skills/hyper-animator-codex/references/shotcraft/source/demos/chart-live-moves/UnitDotSwarmRegroupV2.tsx +248 -0
  159. package/skills/hyper-animator-codex/references/shotcraft/source/demos/circle-match-iris/CircleMatchIris.tsx +124 -0
  160. package/skills/hyper-animator-codex/references/shotcraft/source/demos/cloner-depth-echo/ClonerDepthEcho.tsx +90 -0
  161. package/skills/hyper-animator-codex/references/shotcraft/source/demos/collab-cursor-moves/CursorCastEnsemble.tsx +136 -0
  162. package/skills/hyper-animator-codex/references/shotcraft/source/demos/collab-cursor-moves/CursorDialogueDuet.tsx +145 -0
  163. package/skills/hyper-animator-codex/references/shotcraft/source/demos/color-block-step-wipe/ColorBlockStepWipe.tsx +157 -0
  164. package/skills/hyper-animator-codex/references/shotcraft/source/demos/command-palette-summon/CommandPaletteSummon.tsx +173 -0
  165. package/skills/hyper-animator-codex/references/shotcraft/source/demos/crane-rise-reveal/CraneRiseReveal.tsx +91 -0
  166. package/skills/hyper-animator-codex/references/shotcraft/source/demos/crash-zoom-punch/CrashImpactReal.tsx +63 -0
  167. package/skills/hyper-animator-codex/references/shotcraft/source/demos/crash-zoom-punch/CrashZoomReal.tsx +60 -0
  168. package/skills/hyper-animator-codex/references/shotcraft/source/demos/dataviz-landscape-open/DatavizLandscapeOpen.tsx +401 -0
  169. package/skills/hyper-animator-codex/references/shotcraft/source/demos/depth-layer-moves/DollyZoomReal.tsx +55 -0
  170. package/skills/hyper-animator-codex/references/shotcraft/source/demos/depth-layer-moves/MultiplaneReal.tsx +45 -0
  171. package/skills/hyper-animator-codex/references/shotcraft/source/demos/draw-svg-trace/DrawSvgTrace.tsx +199 -0
  172. package/skills/hyper-animator-codex/references/shotcraft/source/demos/edit-hook-moves/LogoStingButton.tsx +106 -0
  173. package/skills/hyper-animator-codex/references/shotcraft/source/demos/element-body-moves/AxialStretch.tsx +112 -0
  174. package/skills/hyper-animator-codex/references/shotcraft/source/demos/element-body-moves/ContactShadowLift.tsx +117 -0
  175. package/skills/hyper-animator-codex/references/shotcraft/source/demos/fui-hud-moves/LineUnfoldPanel.tsx +125 -0
  176. package/skills/hyper-animator-codex/references/shotcraft/source/demos/fui-hud-moves/ReticleLockOn.tsx +139 -0
  177. package/skills/hyper-animator-codex/references/shotcraft/source/demos/gauge-readout-moves/NeedleSweepSelftest.tsx +146 -0
  178. package/skills/hyper-animator-codex/references/shotcraft/source/demos/gauge-readout-moves/TapeScrollFixedPointer.tsx +120 -0
  179. package/skills/hyper-animator-codex/references/shotcraft/source/demos/glow-flyline-moves/FlylineArc.tsx +158 -0
  180. package/skills/hyper-animator-codex/references/shotcraft/source/demos/glow-flyline-moves/GlowOrbAmbient.tsx +131 -0
  181. package/skills/hyper-animator-codex/references/shotcraft/source/demos/glow-flyline-moves/OrbFlylineRelay.tsx +268 -0
  182. package/skills/hyper-animator-codex/references/shotcraft/source/demos/gradient-word-sweep/GradientWordSweep.tsx +307 -0
  183. package/skills/hyper-animator-codex/references/shotcraft/source/demos/graze-face-tour/GrazeFaceTour.tsx +469 -0
  184. package/skills/hyper-animator-codex/references/shotcraft/source/demos/hashtag-to-pill-materialize/HashtagToPillMaterialize.tsx +166 -0
  185. package/skills/hyper-animator-codex/references/shotcraft/source/demos/icon-field-colorize/IconFieldColorize.tsx +93 -0
  186. package/skills/hyper-animator-codex/references/shotcraft/source/demos/icon-performance-moves/AttentionBounce.tsx +193 -0
  187. package/skills/hyper-animator-codex/references/shotcraft/source/demos/icon-performance-moves/PopBurstConfirm.tsx +162 -0
  188. package/skills/hyper-animator-codex/references/shotcraft/source/demos/impact-feedback/AnimeImpact.tsx +149 -0
  189. package/skills/hyper-animator-codex/references/shotcraft/source/demos/impact-feedback/HitCounter.tsx +147 -0
  190. package/skills/hyper-animator-codex/references/shotcraft/source/demos/input-trigger-moves/CursorPerformancePunchIn.tsx +154 -0
  191. package/skills/hyper-animator-codex/references/shotcraft/source/demos/input-trigger-moves/KeycapSmashCut.tsx +217 -0
  192. package/skills/hyper-animator-codex/references/shotcraft/source/demos/integration-hub-map/IntegrationHubMap.tsx +554 -0
  193. package/skills/hyper-animator-codex/references/shotcraft/source/demos/letterspace-materialize/LetterspaceMaterialize.tsx +85 -0
  194. package/skills/hyper-animator-codex/references/shotcraft/source/demos/light-play-moves/HalationBloom.tsx +139 -0
  195. package/skills/hyper-animator-codex/references/shotcraft/source/demos/light-play-moves/SheenSweepRetry.tsx +85 -0
  196. package/skills/hyper-animator-codex/references/shotcraft/source/demos/light-play-moves/SpotlightSweepReveal.tsx +102 -0
  197. package/skills/hyper-animator-codex/references/shotcraft/source/demos/line-boil/LineBoil.tsx +140 -0
  198. package/skills/hyper-animator-codex/references/shotcraft/source/demos/line-carry-transition/LineCarryTransition.tsx +151 -0
  199. package/skills/hyper-animator-codex/references/shotcraft/source/demos/magician-card-flourish/MagicianCardFlourish.tsx +294 -0
  200. package/skills/hyper-animator-codex/references/shotcraft/source/demos/marker-underline-title/MarkerUnderlineTitle.tsx +87 -0
  201. package/skills/hyper-animator-codex/references/shotcraft/source/demos/montage-rhythm-moves/DominoCascade.tsx +125 -0
  202. package/skills/hyper-animator-codex/references/shotcraft/source/demos/montage-rhythm-moves/DropBlackoutSlam.tsx +135 -0
  203. package/skills/hyper-animator-codex/references/shotcraft/source/demos/montage-rhythm-moves/WrightTripleCut.tsx +175 -0
  204. package/skills/hyper-animator-codex/references/shotcraft/source/demos/morph-from-primitive/MorphFromPrimitive.tsx +190 -0
  205. package/skills/hyper-animator-codex/references/shotcraft/source/demos/neon-frame-forerun/NeonFrameForerun.tsx +279 -0
  206. package/skills/hyper-animator-codex/references/shotcraft/source/demos/neon-frame-orbit-drop/NeonFrameForerunOrbit.tsx +273 -0
  207. package/skills/hyper-animator-codex/references/shotcraft/source/demos/neon-triple-marquee/NeonTripleMarquee.tsx +111 -0
  208. package/skills/hyper-animator-codex/references/shotcraft/source/demos/odometer-digit-roll/OdometerDigitRoll.tsx +178 -0
  209. package/skills/hyper-animator-codex/references/shotcraft/source/demos/overhead-camera-moves/OverheadTabletopDrop.tsx +129 -0
  210. package/skills/hyper-animator-codex/references/shotcraft/source/demos/overhead-camera-moves/TiltReveal.tsx +55 -0
  211. package/skills/hyper-animator-codex/references/shotcraft/source/demos/page-turn-transitions/BarnDoorSplit.tsx +138 -0
  212. package/skills/hyper-animator-codex/references/shotcraft/source/demos/page-turn-transitions/CubeRotate.tsx +114 -0
  213. package/skills/hyper-animator-codex/references/shotcraft/source/demos/page-waterfall-wall/PageWaterfallWall.tsx +76 -0
  214. package/skills/hyper-animator-codex/references/shotcraft/source/demos/page-waterfall-wall/VerticalTicker.tsx +129 -0
  215. package/skills/hyper-animator-codex/references/shotcraft/source/demos/panel-grid-moves/ComicPanelSplit.tsx +171 -0
  216. package/skills/hyper-animator-codex/references/shotcraft/source/demos/panel-grid-moves/FlipGridReflow.tsx +121 -0
  217. package/skills/hyper-animator-codex/references/shotcraft/source/demos/panel-grid-moves/GridFlashMosaic.tsx +182 -0
  218. package/skills/hyper-animator-codex/references/shotcraft/source/demos/paper-craft-moves/MaskingTapeSlap.tsx +163 -0
  219. package/skills/hyper-animator-codex/references/shotcraft/source/demos/paper-craft-moves/PopupBookRise.tsx +134 -0
  220. package/skills/hyper-animator-codex/references/shotcraft/source/demos/paper-plane-messenger/PaperPlaneMessenger.tsx +183 -0
  221. package/skills/hyper-animator-codex/references/shotcraft/source/demos/particle-celebrate-hits/ConfettiCrossfire.tsx +115 -0
  222. package/skills/hyper-animator-codex/references/shotcraft/source/demos/particle-celebrate-hits/CounterTickSparks.tsx +103 -0
  223. package/skills/hyper-animator-codex/references/shotcraft/source/demos/particle-sand-fill/ParticleSandFill.tsx +119 -0
  224. package/skills/hyper-animator-codex/references/shotcraft/source/demos/pill-slot-cycle/PillSlotCycle.tsx +220 -0
  225. package/skills/hyper-animator-codex/references/shotcraft/source/demos/print-texture-transitions/InkBleedReveal.tsx +81 -0
  226. package/skills/hyper-animator-codex/references/shotcraft/source/demos/rhythm-interrupt-moves/JumpCutPunchIn.tsx +72 -0
  227. package/skills/hyper-animator-codex/references/shotcraft/source/demos/rhythm-interrupt-moves/StrobeBlackFrames.tsx +99 -0
  228. package/skills/hyper-animator-codex/references/shotcraft/source/demos/riso-print-hits/RisoBeatPump.tsx +155 -0
  229. package/skills/hyper-animator-codex/references/shotcraft/source/demos/riso-print-hits/RisoMisregistrationHit.tsx +120 -0
  230. package/skills/hyper-animator-codex/references/shotcraft/source/demos/runway-ground-skim/RunwayGroundSkim.tsx +258 -0
  231. package/skills/hyper-animator-codex/references/shotcraft/source/demos/sakuga-timing-shift/SakugaTimingShift.tsx +178 -0
  232. package/skills/hyper-animator-codex/references/shotcraft/source/demos/scene-locked-title/SceneLockedTitle.tsx +98 -0
  233. package/skills/hyper-animator-codex/references/shotcraft/source/demos/scroll-brake-moves/BrakeReticleLock.tsx +171 -0
  234. package/skills/hyper-animator-codex/references/shotcraft/source/demos/scroll-brake-moves/ChangelogScrollBrake.tsx +117 -0
  235. package/skills/hyper-animator-codex/references/shotcraft/source/demos/segmented-thumb-hero/SegmentedThumbHero.tsx +213 -0
  236. package/skills/hyper-animator-codex/references/shotcraft/source/demos/shot-transitions/MaskWipeReal.tsx +67 -0
  237. package/skills/hyper-animator-codex/references/shotcraft/source/demos/shot-transitions/PortalWipeV2.tsx +128 -0
  238. package/skills/hyper-animator-codex/references/shotcraft/source/demos/shot-transitions/WhipBrakeReal.tsx +60 -0
  239. package/skills/hyper-animator-codex/references/shotcraft/source/demos/shot-transitions/WhipPanReal.tsx +45 -0
  240. package/skills/hyper-animator-codex/references/shotcraft/source/demos/skeleton-reveal/SkeletonReveal.tsx +283 -0
  241. package/skills/hyper-animator-codex/references/shotcraft/source/demos/slam-entrance-moves/ImpactBurstKit.tsx +185 -0
  242. package/skills/hyper-animator-codex/references/shotcraft/source/demos/slam-entrance-moves/KanadaPerspectiveSnap.tsx +91 -0
  243. package/skills/hyper-animator-codex/references/shotcraft/source/demos/slam-entrance-moves/ScoreSlam.tsx +225 -0
  244. package/skills/hyper-animator-codex/references/shotcraft/source/demos/smear-multiples/SmearMultiples.tsx +88 -0
  245. package/skills/hyper-animator-codex/references/shotcraft/source/demos/space-camera-moves/DroneDiveLanding.tsx +91 -0
  246. package/skills/hyper-animator-codex/references/shotcraft/source/demos/space-camera-moves/ExplodedView.tsx +178 -0
  247. package/skills/hyper-animator-codex/references/shotcraft/source/demos/space-camera-moves/SnorricamLock.tsx +130 -0
  248. package/skills/hyper-animator-codex/references/shotcraft/source/demos/spectrum-morph-ui/SpectrumMorphUi.tsx +129 -0
  249. package/skills/hyper-animator-codex/references/shotcraft/source/demos/speed-ramp-freeze/FreezeAnnotateReal.tsx +70 -0
  250. package/skills/hyper-animator-codex/references/shotcraft/source/demos/speed-ramp-freeze/SpeedRampReal.tsx +58 -0
  251. package/skills/hyper-animator-codex/references/shotcraft/source/demos/split-flap-title/SplitFlapFlip.tsx +189 -0
  252. package/skills/hyper-animator-codex/references/shotcraft/source/demos/spotlight-sweep-moves/CornerSpotlightReveal.tsx +121 -0
  253. package/skills/hyper-animator-codex/references/shotcraft/source/demos/spotlight-sweep-moves/GlowWakeSleepPanel.tsx +183 -0
  254. package/skills/hyper-animator-codex/references/shotcraft/source/demos/spotlight-sweep-moves/SlideSpotlightPan.tsx +171 -0
  255. package/skills/hyper-animator-codex/references/shotcraft/source/demos/steep-tilt-glide/SteepTiltGlide.tsx +315 -0
  256. package/skills/hyper-animator-codex/references/shotcraft/source/demos/stroke-segment-build/StrokeSegmentBuild.tsx +126 -0
  257. package/skills/hyper-animator-codex/references/shotcraft/source/demos/tear-streak-transitions/GlitchDisplace.tsx +107 -0
  258. package/skills/hyper-animator-codex/references/shotcraft/source/demos/tension-camera-moves/BulletTimeFreezeOrbit.tsx +219 -0
  259. package/skills/hyper-animator-codex/references/shotcraft/source/demos/tension-camera-moves/DutchRollToLevel.tsx +110 -0
  260. package/skills/hyper-animator-codex/references/shotcraft/source/demos/tension-camera-moves/PullBackIsolation.tsx +120 -0
  261. package/skills/hyper-animator-codex/references/shotcraft/source/demos/tension-camera-moves/SlowPushIn.tsx +96 -0
  262. package/skills/hyper-animator-codex/references/shotcraft/source/demos/text-as-mask/TextAsMask.tsx +94 -0
  263. package/skills/hyper-animator-codex/references/shotcraft/source/demos/text-column-converge/TextColumnConverge.tsx +122 -0
  264. package/skills/hyper-animator-codex/references/shotcraft/source/demos/theme-switch-moves/PaletteThemeRipple.tsx +207 -0
  265. package/skills/hyper-animator-codex/references/shotcraft/source/demos/theme-switch-moves/ThemeSweepToggle.tsx +123 -0
  266. package/skills/hyper-animator-codex/references/shotcraft/source/demos/timeline-travel/TimelineTravel.tsx +123 -0
  267. package/skills/hyper-animator-codex/references/shotcraft/source/demos/title-demote-to-label/TitleDemoteToLabel.tsx +174 -0
  268. package/skills/hyper-animator-codex/references/shotcraft/source/demos/trailer-grammar-moves/CardFootageCadence.tsx +118 -0
  269. package/skills/hyper-animator-codex/references/shotcraft/source/demos/trailer-grammar-moves/SmashCut.tsx +105 -0
  270. package/skills/hyper-animator-codex/references/shotcraft/source/demos/trailer-grammar-moves/TrailerBumper.tsx +103 -0
  271. package/skills/hyper-animator-codex/references/shotcraft/source/demos/transition-hidden-cut/InvisibleCut.tsx +93 -0
  272. package/skills/hyper-animator-codex/references/shotcraft/source/demos/transition-hidden-cut/LightLeakBurn.tsx +122 -0
  273. package/skills/hyper-animator-codex/references/shotcraft/source/demos/transition-hidden-cut/VersusSlam.tsx +104 -0
  274. package/skills/hyper-animator-codex/references/shotcraft/source/demos/transition-travel/LetterformZoom.tsx +141 -0
  275. package/skills/hyper-animator-codex/references/shotcraft/source/demos/transition-travel/SharedElementMorph.tsx +101 -0
  276. package/skills/hyper-animator-codex/references/shotcraft/source/demos/type-assembly-moves/LetterformDriftAssembly.tsx +107 -0
  277. package/skills/hyper-animator-codex/references/shotcraft/source/demos/type-assembly-moves/SplitTextStagger.tsx +101 -0
  278. package/skills/hyper-animator-codex/references/shotcraft/source/demos/type-assembly-moves/TextOnPath.tsx +92 -0
  279. package/skills/hyper-animator-codex/references/shotcraft/source/demos/type-assembly-moves/TrackingExpandReveal.tsx +109 -0
  280. package/skills/hyper-animator-codex/references/shotcraft/source/demos/type-entrance-moves/LetterDropPhysics.tsx +100 -0
  281. package/skills/hyper-animator-codex/references/shotcraft/source/demos/type-entrance-moves/ScrambleDecode.tsx +90 -0
  282. package/skills/hyper-animator-codex/references/shotcraft/source/demos/type-rhythm-sync/FontWeightPump.tsx +124 -0
  283. package/skills/hyper-animator-codex/references/shotcraft/source/demos/type-rhythm-sync/KaraokeFillSync.tsx +93 -0
  284. package/skills/hyper-animator-codex/references/shotcraft/source/demos/typewriter-moves/TerminalTypewriter.tsx +122 -0
  285. package/skills/hyper-animator-codex/references/shotcraft/source/demos/typewriter-moves/TypewriterErrorRetype.tsx +109 -0
  286. package/skills/hyper-animator-codex/references/shotcraft/source/demos/ui-strip-away-outro/UiStripAwayOutro.tsx +218 -0
  287. package/skills/hyper-animator-codex/references/shotcraft/source/demos/ui-to-brand-morph/IconFlipBloomLogo.tsx +199 -0
  288. package/skills/hyper-animator-codex/references/shotcraft/source/demos/ui-to-brand-morph/InputMorphsIntoLogo.tsx +215 -0
  289. package/skills/hyper-animator-codex/references/shotcraft/source/demos/voice-waveform-live/VoiceWaveformLive.tsx +171 -0
  290. package/skills/hyper-animator-codex/references/shotcraft/source/demos/wall-reveal-moves/BentoLightUp.tsx +135 -0
  291. package/skills/hyper-animator-codex/references/shotcraft/source/demos/wipe-transitions/BlindsSlice.tsx +107 -0
  292. package/skills/hyper-animator-codex/references/shotcraft/source/demos/wipe-transitions/ClockWipe.tsx +83 -0
  293. package/skills/hyper-animator-codex/references/shotcraft/source/demos/word-relay-filmstrip/WordRelayFilmstrip.tsx +300 -0
  294. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/Root.tsx +15 -0
  295. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/aifl/Caption.tsx +49 -0
  296. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/aifl/DigitRoll.tsx +44 -0
  297. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/aifl/FlashCut.tsx +19 -0
  298. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/aifl/Main.tsx +163 -0
  299. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/aifl/PaperTitleCard.tsx +89 -0
  300. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/aifl/live/PageCam.tsx +145 -0
  301. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/aifl/live/SceneDetail.tsx +146 -0
  302. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/aifl/live/SceneFlyIn.tsx +447 -0
  303. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/aifl/live/SceneOpen.tsx +532 -0
  304. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/aifl/live/SceneOutroLive.tsx +394 -0
  305. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/aifl/live/ScenePapers.tsx +185 -0
  306. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/aifl/live/SceneWbr.tsx +299 -0
  307. package/skills/hyper-animator-codex/references/shotcraft/source/template/src/index.ts +4 -0
  308. package/skills/hyper-animator-codex/references/shotcraft/source-notes.md +10 -0
  309. package/skills/hyper-animator-codex/scripts/generate_minimax_music.mjs +27 -10
  310. package/skills/hyper-animator-codex/scripts/generate_minimax_tts.mjs +142 -13
  311. package/skills/hyper-animator-codex/scripts/generate_subtitles.mjs +42 -3
  312. package/skills/hyper-animator-codex/scripts/minimax_runtime_config.mjs +3 -3
  313. package/skills/hyper-animator-codex/scripts/query_shotcraft.mjs +140 -0
  314. package/skills/hyper-animator-codex/scripts/validate_hyperframes_html.py +22 -0
  315. package/skills/hyper-animator-codex/scripts/validate_provider_policy.mjs +108 -0
  316. package/skills/hyper-animator-codex/scripts/validate_shot_plan.mjs +193 -0
  317. package/skills/hyper-animator-codex/vendor/music-beat-detector/beat_detector/analyzer.py +3 -1
  318. package/skills/hyper-animator-codex/vendor/music-beat-detector/beat_detector/beat.py +37 -1
@@ -0,0 +1,122 @@
1
+ // text-column-converge —— raycast-teams(实测素材 28–36s 段)重做版:
2
+ // 原片测量(1280 宽):NEW 左缘钉死 x=412,特性词右缘钉死 x=867,
3
+ // 两词到左右屏边距相等(412 vs 413),轮换期间间距完全不收缩;
4
+ // 词换到 RAYCAST 后才发生唯一一次合拢——约 1.2s ease-in-out 连续滑动
5
+ // (左缘 412→554 / 右缘 867→725),"NEW RAYCAST" 以屏幕中线居中定格;
6
+ // 定格后约 0.6s,斜体 "COMING 2026" 在下方近乎硬切浮现。
7
+ import React from 'react';
8
+ import { AbsoluteFill, Easing, interpolate, useCurrentFrame } from 'remotion';
9
+
10
+ // 词轮换表:停留帧数不均(机器节奏),全程钉在右缘,不做间距收缩
11
+ const STEPS: { word: string; dur: number }[] = [
12
+ { word: 'LAUNCHER DESIGN', dur: 16 },
13
+ { word: 'COMPACT MODE', dur: 12 },
14
+ { word: 'HOTKEY RECORDER', dur: 9 },
15
+ { word: 'HOTKEY TYPES', dur: 8 },
16
+ { word: 'VOICE FEATURES', dur: 7 },
17
+ { word: 'SETTINGS DESIGN', dur: 8 },
18
+ { word: 'AI CHAT', dur: 10 },
19
+ { word: 'FILE SEARCH', dur: 12 },
20
+ { word: 'RAYCAST', dur: 999 }, // 最后一词:停稳后触发唯一一次合拢
21
+ ];
22
+
23
+ const START = 8; // 开场黑场立静
24
+
25
+ // 原片 1280 宽 → 1920 宽换算(×1.5)
26
+ const NEW_LEFT_EDGE = 618; // 412×1.5:NEW 左缘(= 左屏边距)
27
+ const WORD_RIGHT_EDGE = 1302; // 868×1.5:特性词右缘(= 右屏边距,1920-1302=618 对称)
28
+
29
+ const FS = 42; // 原片字高很小(720p 下 cap ~20px → 1080p ~30px → 字号 ~42)
30
+ const LSP = 3; // letterSpacing
31
+ // 合拢终点按本字体实际步进计算(监视器等宽:0.6em + letterSpacing),
32
+ // 保证 "NEW RAYCAST" 恰好一个空格咬合、整行居中于 960,不会重叠
33
+ const ADV = 0.6 * FS + LSP; // 每字符步进
34
+ const LINE_W = 11 * ADV; // "NEW RAYCAST" 共 11 字符
35
+ const MERGED_LEFT = 960 - LINE_W / 2; // 合拢后 NEW 左缘
36
+ const MERGED_RIGHT = 960 + LINE_W / 2; // 合拢后 RAYCAST 右缘
37
+ const CONVERGE_DUR = 36; // 合拢时长:原片 ~1.2s ≈ 36 帧
38
+ const CONVERGE_DELAY = 10; // RAYCAST 停稳后先静置 10 帧再合拢(原片 32.4→32.7s)
39
+ const SUB_DELAY = 18; // 合拢定格后 ~0.6s 出斜体小字
40
+
41
+ export const TextColumnConverge: React.FC = () => {
42
+ const f = useCurrentFrame();
43
+ const t = f - START;
44
+
45
+ // 定位当前步
46
+ let acc = 0;
47
+ let idx = 0;
48
+ let stepStart = 0;
49
+ for (let i = 0; i < STEPS.length; i++) {
50
+ if (t >= acc) { idx = i; stepStart = acc; }
51
+ acc += STEPS[i].dur;
52
+ }
53
+ const cur = STEPS[idx];
54
+ const isLast = idx === STEPS.length - 1;
55
+ const local = t - stepStart;
56
+
57
+ // 唯一一次合拢:RAYCAST 停稳 CONVERGE_DELAY 帧后,ease-in-out 连续滑动
58
+ const cvT = isLast ? local - CONVERGE_DELAY : -1;
59
+ const cv = interpolate(cvT, [0, CONVERGE_DUR], [0, 1], {
60
+ extrapolateLeft: 'clamp', extrapolateRight: 'clamp',
61
+ easing: Easing.inOut(Easing.cubic),
62
+ });
63
+
64
+ // NEW 左缘:618 → 831;特性词右缘:1302 → 1088
65
+ const newLeft = interpolate(cv, [0, 1], [NEW_LEFT_EDGE, MERGED_LEFT]);
66
+ const wordRight = interpolate(cv, [0, 1], [WORD_RIGHT_EDGE, MERGED_RIGHT]);
67
+
68
+ const converged = cv >= 1;
69
+
70
+ // 斜体小字:合拢定格后 SUB_DELAY 帧,近乎硬切(4 帧快速淡入,无位移)
71
+ const subT = converged ? cvT - CONVERGE_DUR - SUB_DELAY : -1;
72
+ const subOp = interpolate(subT, [0, 4], [0, 1], {
73
+ extrapolateLeft: 'clamp', extrapolateRight: 'clamp',
74
+ });
75
+
76
+ const visible = t >= 0;
77
+
78
+ const font: React.CSSProperties = {
79
+ fontFamily: '"SF Mono", Menlo, monospace',
80
+ fontWeight: 500,
81
+ fontSize: FS,
82
+ letterSpacing: 3,
83
+ color: '#f2f2f4',
84
+ whiteSpace: 'nowrap',
85
+ lineHeight: 1,
86
+ };
87
+
88
+ return (
89
+ <AbsoluteFill style={{ background: '#050506', overflow: 'hidden' }}>
90
+ {visible && (
91
+ <div style={{ position: 'absolute', inset: 0 }}>
92
+ {/* NEW:左缘定位(轮换期间钉死在左屏边距处) */}
93
+ <div style={{
94
+ ...font, position: 'absolute',
95
+ left: newLeft, top: 519,
96
+ }}>
97
+ NEW
98
+ </div>
99
+ {/* 特性词:右缘定位(词换长换短,右缘不动) */}
100
+ <div style={{
101
+ ...font, position: 'absolute',
102
+ right: 1920 - wordRight, top: 519,
103
+ }}>
104
+ {cur.word}
105
+ </div>
106
+
107
+ {/* 斜体小字:合拢后在整行正下方浮现,与整行同左缘 */}
108
+ <div style={{
109
+ ...font,
110
+ fontStyle: 'italic',
111
+ color: '#d8d8dc',
112
+ position: 'absolute',
113
+ left: MERGED_LEFT, top: 519 + FS + 14,
114
+ opacity: subOp,
115
+ }}>
116
+ COMING 2026
117
+ </div>
118
+ </div>
119
+ )}
120
+ </AbsoluteFill>
121
+ );
122
+ };
@@ -0,0 +1,207 @@
1
+ // 组合:命令面板 × 深浅扫场(palette-theme-ripple)
2
+ // FakeDashboard 静置 → 整屏压暗+blur → ⌘K 面板弹落 → 模拟输入"dark"
3
+ // (灰块字符逐个弹出)→ 回车帧面板 5f 收缩成一个亮点 → 深色扫场边界
4
+ // **从该亮点位置**荡开(clip-path 圆扩张 + 亮边缘环)扫过全 UI 变深色版 → 真静止。
5
+ // 组合命门:扫场起点必须是面板收缩点(960,470),收缩完成帧=扫场起始帧
6
+ // (RIPPLE=73),从别处/别帧开始就断了因果。
7
+ // 关键帧:0–15 浅色静置 → 15–22 压暗 blur → 22–30 面板弹落(超调)→
8
+ // 38–62 逐字输入 d/a/r/k → 68 回车 → 68–73 面板收缩成亮点 → 73–95 扫场
9
+ // 荡开 → 95–170 深色真静止 75f。深色版为手工反转 G 色板的本地 DarkDashboard。
10
+ // 帧确定,无随机源。
11
+ import React from 'react';
12
+ import { useCurrentFrame, interpolate, Easing } from 'remotion';
13
+ import { G, FakeDashboard } from '../_fixtures/Fixtures';
14
+
15
+ const DIM_START = 15;
16
+ const PANEL_IN = 22;
17
+ const TYPE_FRAMES = [38, 46, 54, 62]; // d a r k
18
+ const ENTER = 68;
19
+ const RIPPLE = 73; // 面板收缩完成帧 = 扫场起始帧(组合命门)
20
+ const RIPPLE_END = 95;
21
+ const ORIGIN = { x: 960, y: 470 }; // 面板中心 = 收缩点 = 扫场圆心
22
+ const MAX_R = 1250;
23
+
24
+ // 手工反转 G 色板的深色版
25
+ const D = {
26
+ bg: '#1a1a1c', panel: '#232325', line: '#3a3a38', bar: '#6f6f6d',
27
+ ink: '#e8e8e6', mid: '#7a7a78', card: '#262628', border: '#454543',
28
+ side: '#0e0e10', sideBar: '#555553',
29
+ };
30
+
31
+ const DarkCard: React.FC<{ seed: number }> = ({ seed }) => {
32
+ const titleW = 45 + ((seed * 37) % 40);
33
+ const lines = 2 + (seed % 3);
34
+ return (
35
+ <div style={{ width: '100%', height: '100%', background: D.card, border: `2px solid ${D.border}`, borderRadius: 14, padding: 18, boxSizing: 'border-box', display: 'flex', flexDirection: 'column', gap: 10 }}>
36
+ <div style={{ height: 16, width: `${titleW}%`, background: D.bar, borderRadius: 8 }} />
37
+ {Array.from({ length: lines }).map((_, i) => (
38
+ <div key={i} style={{ height: 10, width: `${88 - i * 14 - (seed % 5) * 3}%`, background: D.line, borderRadius: 5 }} />
39
+ ))}
40
+ <div style={{ marginTop: 'auto', display: 'flex', gap: 8, alignItems: 'center' }}>
41
+ <div style={{ width: 26, height: 26, borderRadius: 13, background: D.mid }} />
42
+ <div style={{ height: 10, width: 64, background: D.line, borderRadius: 5 }} />
43
+ </div>
44
+ </div>
45
+ );
46
+ };
47
+
48
+ // 与 FakeDashboard variant A 布局逐像素一致的深色版——扫场读作"同一 UI 换肤"
49
+ const DarkDashboard: React.FC = () => (
50
+ <div style={{ width: 1920, height: 1080, background: D.bg, display: 'flex' }}>
51
+ <div style={{ width: 220, background: D.side, padding: '28px 22px', boxSizing: 'border-box', display: 'flex', flexDirection: 'column', gap: 18 }}>
52
+ <div style={{ width: 40, height: 40, borderRadius: 10, background: '#8a8a88' }} />
53
+ {Array.from({ length: 7 }).map((_, i) => (
54
+ <div key={i} style={{ height: 12, width: `${60 + ((i * 29) % 35)}%`, background: D.sideBar, borderRadius: 6 }} />
55
+ ))}
56
+ </div>
57
+ <div style={{ flex: 1, display: 'flex', flexDirection: 'column' }}>
58
+ <div style={{ height: 72, background: D.panel, borderBottom: `2px solid ${D.line}`, display: 'flex', alignItems: 'center', padding: '0 32px', gap: 20, boxSizing: 'border-box' }}>
59
+ <div style={{ height: 18, width: 180, background: D.bar, borderRadius: 9 }} />
60
+ <div style={{ marginLeft: 'auto', height: 36, width: 320, background: D.card, border: `2px solid ${D.line}`, borderRadius: 18, boxSizing: 'border-box' }} />
61
+ <div style={{ width: 36, height: 36, borderRadius: 18, background: D.mid }} />
62
+ </div>
63
+ <div style={{ flex: 1, padding: 36, display: 'grid', gridTemplateColumns: 'repeat(3, 1fr)', gridAutoRows: '1fr', gap: 28, boxSizing: 'border-box' }}>
64
+ {Array.from({ length: 6 }).map((_, i) => (
65
+ <DarkCard key={i} seed={i + 1} />
66
+ ))}
67
+ </div>
68
+ </div>
69
+ </div>
70
+ );
71
+
72
+ export const PaletteThemeRipple: React.FC = () => {
73
+ const f = useCurrentFrame();
74
+
75
+ // 压暗 + blur:面板阶段生效,扫场完成后浅色层已被卸载
76
+ const dim = interpolate(f, [DIM_START, DIM_START + 7], [0, 1], {
77
+ extrapolateLeft: 'clamp', extrapolateRight: 'clamp',
78
+ });
79
+
80
+ // 面板弹落(back-out 超调)
81
+ const panelT = interpolate(f, [PANEL_IN, PANEL_IN + 8], [0, 1], {
82
+ extrapolateLeft: 'clamp', extrapolateRight: 'clamp',
83
+ easing: Easing.out(Easing.back(1.9)),
84
+ });
85
+ // 回车后 5f 收缩成一点(ease-in,越缩越快)
86
+ const shrink = interpolate(f, [ENTER, RIPPLE], [1, 0], {
87
+ extrapolateLeft: 'clamp', extrapolateRight: 'clamp',
88
+ easing: Easing.in(Easing.cubic),
89
+ });
90
+ const panelMounted = f >= PANEL_IN && f < RIPPLE;
91
+ const panelScale = f < ENTER ? panelT : shrink;
92
+ const panelDropY = f < ENTER ? interpolate(panelT, [0, 1], [-120, 0]) : 0;
93
+
94
+ // 逐字输入:每个灰块 4f 内弹出
95
+ const charScale = (i: number) =>
96
+ interpolate(f, [TYPE_FRAMES[i], TYPE_FRAMES[i] + 4], [0, 1], {
97
+ extrapolateLeft: 'clamp', extrapolateRight: 'clamp',
98
+ easing: Easing.out(Easing.back(2.2)),
99
+ });
100
+ const typedCount = TYPE_FRAMES.filter((t) => f >= t).length;
101
+
102
+ // 扫场:圆从收缩点荡开(ease-out,先快后缓),边缘带亮环
103
+ const r = interpolate(f, [RIPPLE, RIPPLE_END], [12, MAX_R], {
104
+ extrapolateLeft: 'clamp', extrapolateRight: 'clamp',
105
+ easing: Easing.out(Easing.cubic),
106
+ });
107
+ const rippling = f >= RIPPLE && f < RIPPLE_END;
108
+ const done = f >= RIPPLE_END;
109
+ const ringOpacity = interpolate(f, [RIPPLE, RIPPLE_END], [0.95, 0], {
110
+ extrapolateLeft: 'clamp', extrapolateRight: 'clamp',
111
+ });
112
+
113
+ // 亮点:收缩完成前后 3f 的高光核(把"收缩点=扫场起点"钉死给观众看)
114
+ const dotOn = f >= ENTER + 2 && f < RIPPLE + 3;
115
+
116
+ return (
117
+ <div style={{ width: 1920, height: 1080, background: D.bg, position: 'relative', overflow: 'hidden' }}>
118
+ {/* 浅色层:扫场完成后条件卸载(真静止) */}
119
+ {!done && (
120
+ <div style={{ position: 'absolute', inset: 0, filter: dim > 0 ? `brightness(${1 - dim * 0.45}) blur(${dim * 6}px)` : 'none' }}>
121
+ <FakeDashboard variant="A" />
122
+ </div>
123
+ )}
124
+
125
+ {/* 深色层:从收缩点起被圆形 clip 揭开;完成后铺满且无 clip */}
126
+ {(rippling || done) && (
127
+ <div style={{ position: 'absolute', inset: 0, clipPath: done ? 'none' : `circle(${r}px at ${ORIGIN.x}px ${ORIGIN.y}px)` }}>
128
+ <DarkDashboard />
129
+ </div>
130
+ )}
131
+
132
+ {/* 扫场亮边缘环 */}
133
+ {rippling && (
134
+ <div
135
+ style={{
136
+ position: 'absolute',
137
+ left: ORIGIN.x - r,
138
+ top: ORIGIN.y - r,
139
+ width: r * 2,
140
+ height: r * 2,
141
+ borderRadius: '50%',
142
+ border: '5px solid rgba(255,255,255,0.9)',
143
+ opacity: ringOpacity,
144
+ boxShadow: '0 0 40px rgba(255,255,255,0.5), inset 0 0 30px rgba(255,255,255,0.35)',
145
+ }}
146
+ />
147
+ )}
148
+
149
+ {/* 收缩亮点 */}
150
+ {dotOn && (
151
+ <div
152
+ style={{
153
+ position: 'absolute',
154
+ left: ORIGIN.x - 11,
155
+ top: ORIGIN.y - 11,
156
+ width: 22,
157
+ height: 22,
158
+ borderRadius: 11,
159
+ background: '#ffffff',
160
+ boxShadow: '0 0 46px 14px rgba(255,255,255,0.85)',
161
+ }}
162
+ />
163
+ )}
164
+
165
+ {/* ⌘K 命令面板 */}
166
+ {panelMounted && (
167
+ <div
168
+ style={{
169
+ position: 'absolute',
170
+ left: ORIGIN.x - 340,
171
+ top: ORIGIN.y - 130 + panelDropY,
172
+ width: 680,
173
+ height: 260,
174
+ transform: `scale(${Math.max(panelScale, 0.001)})`,
175
+ transformOrigin: 'center center',
176
+ background: G.card,
177
+ border: `2px solid ${G.border}`,
178
+ borderRadius: 18,
179
+ boxShadow: '0 30px 80px rgba(0,0,0,0.4)',
180
+ padding: 24,
181
+ boxSizing: 'border-box',
182
+ display: 'flex',
183
+ flexDirection: 'column',
184
+ gap: 16,
185
+ }}
186
+ >
187
+ {/* 输入行:⌘K 标识 + 逐字灰块 */}
188
+ <div style={{ height: 62, border: `2px solid ${G.line}`, borderRadius: 12, display: 'flex', alignItems: 'center', gap: 14, padding: '0 18px', boxSizing: 'border-box' }}>
189
+ <div style={{ padding: '6px 12px', borderRadius: 8, background: G.side, color: '#fff', fontFamily: 'Helvetica, Arial, sans-serif', fontWeight: 800, fontSize: 22 }}>⌘K</div>
190
+ {TYPE_FRAMES.map((_, i) => (
191
+ <div key={i} style={{ width: 30, height: 30, borderRadius: 6, background: G.ink, transform: `scale(${charScale(i)})` }} />
192
+ ))}
193
+ {/* 光标:帧确定闪烁(每 8f 翻转) */}
194
+ <div style={{ width: 4, height: 34, background: G.ink, opacity: Math.floor(f / 8) % 2 === 0 ? 1 : 0 }} />
195
+ </div>
196
+ {/* 结果行:输入完成后首行加深表示选中 */}
197
+ {Array.from({ length: 3 }).map((_, i) => (
198
+ <div key={i} style={{ height: 44, borderRadius: 10, background: i === 0 && typedCount === 4 ? G.line : G.panel, display: 'flex', alignItems: 'center', gap: 14, padding: '0 16px', boxSizing: 'border-box' }}>
199
+ <div style={{ width: 24, height: 24, borderRadius: 6, background: G.mid }} />
200
+ <div style={{ height: 12, width: `${34 + i * 16}%`, background: G.bar, borderRadius: 6 }} />
201
+ </div>
202
+ ))}
203
+ </div>
204
+ )}
205
+ </div>
206
+ );
207
+ };
@@ -0,0 +1,123 @@
1
+ // theme-sweep-toggle —— 深浅模式扫场
2
+ // 同一 dashboard 深浅两版叠放(深版手工映射 G 色板),上层深版用 clip-path
3
+ // polygon 15° 斜边从左上扫到右下(先快后缓),边界带 2px 亮线;
4
+ // 扫完深版整体 scale 0.995→1 "坐实"。f=70 后全静止(70f)。
5
+ import React from 'react';
6
+ import { useCurrentFrame, interpolate, Easing } from 'remotion';
7
+
8
+ const CL = { extrapolateLeft: 'clamp', extrapolateRight: 'clamp' } as const;
9
+
10
+ // 浅色板 = Fixtures G;深色板手工反转映射
11
+ type Pal = {
12
+ bg: string; panel: string; line: string; bar: string;
13
+ mid: string; card: string; border: string; side: string; sideBar: string;
14
+ };
15
+ const LIGHT: Pal = {
16
+ bg: '#ececea', panel: '#f7f7f6', line: '#dcdcda', bar: '#c2c2c0',
17
+ mid: '#8f8f8d', card: '#ffffff', border: '#d8d8d6', side: '#3a3a3a', sideBar: '#5a5a58',
18
+ };
19
+ const DARK: Pal = {
20
+ bg: '#1c1c1b', panel: '#242423', line: '#3a3a38', bar: '#6e6e6c',
21
+ mid: '#8f8f8d', card: '#2c2c2b', border: '#454543', side: '#0f0f0e', sideBar: '#6a6a68',
22
+ };
23
+
24
+ // 带色板参数的 dashboard(结构同 Fixtures.FakeDashboard variant A)
25
+ const Dash: React.FC<{ p: Pal }> = ({ p }) => (
26
+ <div style={{ width: 1920, height: 1080, background: p.bg, display: 'flex' }}>
27
+ <div style={{ width: 220, background: p.side, padding: '28px 22px', boxSizing: 'border-box', display: 'flex', flexDirection: 'column', gap: 18 }}>
28
+ <div style={{ width: 40, height: 40, borderRadius: 10, background: p.sideBar }} />
29
+ {Array.from({ length: 7 }).map((_, i) => (
30
+ <div key={i} style={{ height: 12, width: `${60 + ((i * 29) % 35)}%`, background: p.sideBar, borderRadius: 6 }} />
31
+ ))}
32
+ </div>
33
+ <div style={{ flex: 1, display: 'flex', flexDirection: 'column' }}>
34
+ <div style={{ height: 72, background: p.panel, borderBottom: `2px solid ${p.line}`, display: 'flex', alignItems: 'center', padding: '0 32px', gap: 20, boxSizing: 'border-box' }}>
35
+ <div style={{ height: 18, width: 180, background: p.bar, borderRadius: 9 }} />
36
+ <div style={{ marginLeft: 'auto', height: 36, width: 320, background: p.card, border: `2px solid ${p.line}`, borderRadius: 18, boxSizing: 'border-box' }} />
37
+ <div style={{ width: 36, height: 36, borderRadius: 18, background: p.mid }} />
38
+ </div>
39
+ <div style={{ flex: 1, padding: 36, display: 'grid', gridTemplateColumns: 'repeat(3, 1fr)', gridAutoRows: '1fr', gap: 28, boxSizing: 'border-box' }}>
40
+ {Array.from({ length: 6 }).map((_, i) => {
41
+ const titleW = 45 + (((i + 1) * 37) % 40);
42
+ const lines = 2 + ((i + 1) % 3);
43
+ return (
44
+ <div key={i} style={{ background: p.card, border: `2px solid ${p.border}`, borderRadius: 14, padding: 18, boxSizing: 'border-box', display: 'flex', flexDirection: 'column', gap: 10 }}>
45
+ <div style={{ height: 16, width: `${titleW}%`, background: p.bar, borderRadius: 8 }} />
46
+ {Array.from({ length: lines }).map((_, j) => (
47
+ <div key={j} style={{ height: 10, width: `${88 - j * 14 - ((i + 1) % 5) * 3}%`, background: p.line, borderRadius: 5 }} />
48
+ ))}
49
+ <div style={{ marginTop: 'auto', display: 'flex', gap: 8, alignItems: 'center' }}>
50
+ <div style={{ width: 26, height: 26, borderRadius: 13, background: p.mid }} />
51
+ <div style={{ height: 10, width: 64, background: p.line, borderRadius: 5 }} />
52
+ </div>
53
+ </div>
54
+ );
55
+ })}
56
+ </div>
57
+ </div>
58
+ </div>
59
+ );
60
+
61
+ // 时间轴
62
+ const SWEEP0 = 14; // 扫场开始(前 14f 初始静置)
63
+ const SWEEP1 = 52; // 扫场结束
64
+ const SETTLE0 = 52;
65
+ const SETTLE1 = 64; // 坐实结束 → 之后全静止
66
+
67
+ const SLANT = 1080 * Math.tan((15 * Math.PI) / 180); // ≈ 289px,15° 斜边
68
+
69
+ export const ThemeSweepToggle: React.FC = () => {
70
+ const frame = useCurrentFrame();
71
+
72
+ // 边界顶端 x:先快后缓(poly(3) out);从左外扫到右外+SLANT 保证底边也扫尽
73
+ const p = interpolate(frame, [SWEEP0, SWEEP1], [-20, 1920 + SLANT + 40], {
74
+ easing: Easing.out(Easing.poly(3)),
75
+ ...CL,
76
+ });
77
+
78
+ // 坐实:0.995 → 1
79
+ const settle = interpolate(frame, [SETTLE0, SETTLE0 + 1, SETTLE1], [1, 0.995, 1], {
80
+ easing: Easing.out(Easing.cubic),
81
+ ...CL,
82
+ });
83
+
84
+ // 亮线透明度:扫场期间可见,扫完 6f 内淡出
85
+ const lineOp = interpolate(frame, [SWEEP0, SWEEP0 + 4, SWEEP1 - 4, SWEEP1 + 2], [0, 1, 1, 0], CL);
86
+ const sweeping = frame >= SWEEP0 && frame < SWEEP1 + 2;
87
+
88
+ return (
89
+ <div style={{ width: 1920, height: 1080, position: 'relative', overflow: 'hidden', background: LIGHT.bg }}>
90
+ {/* 底层浅色版 */}
91
+ <Dash p={LIGHT} />
92
+ {/* 上层深色版,clip-path 斜切揭出 */}
93
+ <div
94
+ style={{
95
+ position: 'absolute',
96
+ inset: 0,
97
+ clipPath: `polygon(0 0, ${p}px 0, ${p - SLANT}px 1080px, 0 1080px)`,
98
+ transform: `scale(${settle})`,
99
+ transformOrigin: '50% 50%',
100
+ }}
101
+ >
102
+ <Dash p={DARK} />
103
+ </div>
104
+ {/* 2px 亮线边界(条件卸载) */}
105
+ {sweeping && (
106
+ <div
107
+ style={{
108
+ position: 'absolute',
109
+ left: p - SLANT / 2 - 2,
110
+ top: 540 - 620,
111
+ width: 4,
112
+ height: 1240,
113
+ background: '#ffffff',
114
+ boxShadow: '0 0 18px 4px rgba(255,255,255,0.75)',
115
+ transform: 'rotate(15deg)',
116
+ transformOrigin: '50% 50%',
117
+ opacity: lineOp,
118
+ }}
119
+ />
120
+ )}
121
+ </div>
122
+ );
123
+ };
@@ -0,0 +1,123 @@
1
+ // timeline-travel —— 时间轴横移(《反恐王国》式)
2
+ // 镜头沿水平刻度轴加速横移,v1.0/v2.0/v3.0/Today 四个刻度依次掠过,
3
+ // 每过刻度对应 Card 从刻度线 spring 过冲弹立 + 短停,镜头不停;
4
+ // 末刻度 4f 急停 + 推近 1.28×。世界层只动 translateX/scale。
5
+ // f0–12 初始静置;f118 起真静止 ≥42f(160f 总长)。
6
+ import React from 'react';
7
+ import { useCurrentFrame, interpolate, Easing, spring } from 'remotion';
8
+ import { G, Card, TitleBlock } from '../_fixtures/Fixtures';
9
+
10
+ const W = 1920;
11
+ const AXIS_Y = 700;
12
+ const TICK_GAP = 1400; // 刻度间距(世界坐标)
13
+ const TICKS = [
14
+ { label: 'v1.0', x: 960 },
15
+ { label: 'v2.0', x: 960 + TICK_GAP },
16
+ { label: 'v3.0', x: 960 + TICK_GAP * 2 },
17
+ { label: 'Today', x: 960 + TICK_GAP * 3 },
18
+ ];
19
+ const WORLD_W = 960 + TICK_GAP * 3 + 960;
20
+
21
+ const TRAVEL_START = 12;
22
+ const TRAVEL_END = 104; // 急停帧
23
+ const ZOOM_END = 114;
24
+
25
+ // 相机 X:in-out 但前段慢后段快(poly(3) in 为主,末端 out 急收)
26
+ // 用两段拼:0–0.82 加速段(Easing.in(poly(2.2))),0.82–1 急刹段
27
+ const camXAt = (f: number): number => {
28
+ const total = TICKS[3].x - 960; // 需要位移的世界距离
29
+ const t = interpolate(f, [TRAVEL_START, TRAVEL_END], [0, 1], {
30
+ extrapolateLeft: 'clamp',
31
+ extrapolateRight: 'clamp',
32
+ });
33
+ // 加速→巡航→急刹:分段缓动,前 15% 缓起,中段近匀加速冲刺,末 12% 急收
34
+ const eased = interpolate(t, [0, 0.15, 0.88, 1], [0, 0.055, 0.9, 1], {
35
+ easing: Easing.inOut(Easing.quad),
36
+ });
37
+ return eased * total;
38
+ };
39
+
40
+ // 每张卡的弹立帧:相机中心扫过该刻度的时刻(数值上预先求好,避免逐帧求逆)
41
+ // 通过 camXAt 反查:找到 camX == tick.x - 960 的帧
42
+ const popFrameOf = (tickX: number): number => {
43
+ for (let f = TRAVEL_START; f <= TRAVEL_END; f++) {
44
+ if (camXAt(f) >= tickX - 960) return f;
45
+ }
46
+ return TRAVEL_END;
47
+ };
48
+
49
+ const CARD_W = 360;
50
+ const CARD_H = 240;
51
+
52
+ const TickStop: React.FC<{ i: number; frame: number }> = ({ i, frame }) => {
53
+ const tick = TICKS[i];
54
+ const pop = popFrameOf(tick.x) - 6; // 提前 6f 起弹,掠过时正好立起
55
+ const s = spring({
56
+ frame: frame - pop,
57
+ fps: 30,
58
+ config: { damping: 11, stiffness: 160, mass: 0.9 }, // 明显过冲
59
+ durationInFrames: 26,
60
+ });
61
+ const appeared = frame >= pop;
62
+
63
+ return (
64
+ <div style={{ position: 'absolute', left: tick.x, top: 0 }}>
65
+ {/* 刻度竖线 */}
66
+ <div style={{ position: 'absolute', left: -3, top: AXIS_Y - 28, width: 6, height: 56, background: G.ink, borderRadius: 3 }} />
67
+ {/* 刻度标签 */}
68
+ <div style={{ position: 'absolute', left: -80, top: AXIS_Y + 44, width: 160, textAlign: 'center', fontFamily: 'Helvetica, Arial, sans-serif', fontWeight: 800, fontSize: 40, color: G.ink }}>
69
+ {tick.label}
70
+ </div>
71
+ {/* 卡片从刻度线弹立:以底边为轴 scaleY 0→1(带过冲),伴随上移 */}
72
+ {appeared && (
73
+ <div
74
+ style={{
75
+ position: 'absolute',
76
+ left: -CARD_W / 2,
77
+ top: AXIS_Y - 36 - CARD_H,
78
+ transform: `scaleY(${s}) scaleX(${0.6 + 0.4 * s})`,
79
+ transformOrigin: '50% 100%',
80
+ opacity: Math.min(1, s * 2),
81
+ }}
82
+ >
83
+ <Card w={CARD_W} h={CARD_H} seed={i + 2} />
84
+ </div>
85
+ )}
86
+ </div>
87
+ );
88
+ };
89
+
90
+ export const TimelineTravel: React.FC = () => {
91
+ const frame = useCurrentFrame();
92
+ const camX = camXAt(frame);
93
+
94
+ // 急停后推近末刻度:scale 1 → 1.28,中心对准 Today 刻度
95
+ const zoom = interpolate(frame, [TRAVEL_END, ZOOM_END], [1, 1.28], {
96
+ easing: Easing.out(Easing.cubic),
97
+ extrapolateLeft: 'clamp',
98
+ extrapolateRight: 'clamp',
99
+ });
100
+
101
+ return (
102
+ <div style={{ width: W, height: 1080, background: G.bg, overflow: 'hidden', position: 'relative' }}>
103
+ {/* 推近层:以画面中央偏下(末刻度落点)为原点放大 */}
104
+ <div style={{ width: W, height: 1080, transform: `scale(${zoom})`, transformOrigin: '50% 62%' }}>
105
+ {/* 世界层:唯一横移的容器 */}
106
+ <div style={{ position: 'absolute', left: 0, top: 0, width: WORLD_W, height: 1080, transform: `translateX(${-camX}px)` }}>
107
+ {/* 主轴线 */}
108
+ <div style={{ position: 'absolute', left: 200, top: AXIS_Y - 3, width: WORLD_W - 400, height: 6, background: G.bar, borderRadius: 3 }} />
109
+ {/* 次刻度(小点,增强速度感) */}
110
+ {Array.from({ length: 22 }).map((_, i) => (
111
+ <div key={i} style={{ position: 'absolute', left: 960 + i * (TICK_GAP / 5) - 2, top: AXIS_Y - 12, width: 4, height: 24, background: G.bar, borderRadius: 2 }} />
112
+ ))}
113
+ {TICKS.map((_, i) => (
114
+ <TickStop key={i} i={i} frame={frame} />
115
+ ))}
116
+ </div>
117
+ </div>
118
+ <div style={{ position: 'absolute', top: 90, width: '100%', textAlign: 'center' }}>
119
+ <TitleBlock text="TIMELINE TRAVEL" size={64} />
120
+ </div>
121
+ </div>
122
+ );
123
+ };