@mevdragon/vidfarm-devcli 0.14.0 → 0.15.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.
- package/.agents/skills/embedded-captions/CATALOG.md +93 -0
- package/.agents/skills/embedded-captions/SKILL.md +286 -0
- package/.agents/skills/embedded-captions/assets/brand/CDPR-fankit-terms.txt +35 -0
- package/.agents/skills/embedded-captions/assets/brand/cyberpunk-widths.json +115 -0
- package/.agents/skills/embedded-captions/assets/fonts/char-widths.json +2211 -0
- package/.agents/skills/embedded-captions/assets/strokefonts/HersheyScript1.svg +242 -0
- package/.agents/skills/embedded-captions/assets/strokefonts/HersheyScriptMed.svg +242 -0
- package/.agents/skills/embedded-captions/dna/README.md +148 -0
- package/.agents/skills/embedded-captions/dna/chrome.json +68 -0
- package/.agents/skills/embedded-captions/dna/cream.json +69 -0
- package/.agents/skills/embedded-captions/dna/documentary.json +62 -0
- package/.agents/skills/embedded-captions/dna/editorial.json +70 -0
- package/.agents/skills/embedded-captions/dna/glitch.json +82 -0
- package/.agents/skills/embedded-captions/dna/ink.json +65 -0
- package/.agents/skills/embedded-captions/dna/keynote.json +62 -0
- package/.agents/skills/embedded-captions/dna/loud.json +75 -0
- package/.agents/skills/embedded-captions/dna/neon.json +58 -0
- package/.agents/skills/embedded-captions/dna/velocity.json +89 -0
- package/.agents/skills/embedded-captions/modes/cinematic/README.md +48 -0
- package/.agents/skills/embedded-captions/modes/cinematic/_archive/champion/spec.md +98 -0
- package/.agents/skills/embedded-captions/modes/cinematic/_archive/champion/template.html +188 -0
- package/.agents/skills/embedded-captions/modes/cinematic/_archive/memory-wall/spec.md +134 -0
- package/.agents/skills/embedded-captions/modes/cinematic/_archive/memory-wall/template.html +179 -0
- package/.agents/skills/embedded-captions/modes/cinematic/_archive/portrait-header/spec.md +81 -0
- package/.agents/skills/embedded-captions/modes/cinematic/_archive/portrait-header/template.html +170 -0
- package/.agents/skills/embedded-captions/modes/cinematic/cinematic-cream/spec.md +16 -0
- package/.agents/skills/embedded-captions/modes/cinematic/cinematic-cream/template.html +226 -0
- package/.agents/skills/embedded-captions/modes/cinematic/engine.html +355 -0
- package/.agents/skills/embedded-captions/modes/standard/_anatomy.md +233 -0
- package/.agents/skills/embedded-captions/modes/standard/_motion.md +192 -0
- package/.agents/skills/embedded-captions/modes/standard/fonts/build-fonts-css.cjs +97 -0
- package/.agents/skills/embedded-captions/references/aesthetic-principles.md +168 -0
- package/.agents/skills/embedded-captions/references/anti-patterns.md +188 -0
- package/.agents/skills/embedded-captions/references/bespoke-vs-presets.md +178 -0
- package/.agents/skills/embedded-captions/references/caption-grouping.md +130 -0
- package/.agents/skills/embedded-captions/references/composition-craft.md +522 -0
- package/.agents/skills/embedded-captions/references/direction-catalog.md +138 -0
- package/.agents/skills/embedded-captions/references/example-renders/champion.html +371 -0
- package/.agents/skills/embedded-captions/references/example-renders/memory-wall.html +334 -0
- package/.agents/skills/embedded-captions/references/failure-modes.md +145 -0
- package/.agents/skills/embedded-captions/references/layout-heuristics.md +238 -0
- package/.agents/skills/embedded-captions/references/motion-vocabulary.md +148 -0
- package/.agents/skills/embedded-captions/references/rail.md +68 -0
- package/.agents/skills/embedded-captions/references/reference-bar.md +47 -0
- package/.agents/skills/embedded-captions/references/scene-types.md +94 -0
- package/.agents/skills/embedded-captions/references/test-set.md +66 -0
- package/.agents/skills/embedded-captions/references/typographic-moves.md +266 -0
- package/.agents/skills/embedded-captions/references/typography-presets.md +63 -0
- package/.agents/skills/embedded-captions/scripts/audio-envelope.cjs +95 -0
- package/.agents/skills/embedded-captions/scripts/check-occlusion.cjs +250 -0
- package/.agents/skills/embedded-captions/scripts/check-overflow.cjs +194 -0
- package/.agents/skills/embedded-captions/scripts/check-rail-climax.cjs +233 -0
- package/.agents/skills/embedded-captions/scripts/check-timing.cjs +173 -0
- package/.agents/skills/embedded-captions/scripts/fill-timings.cjs +124 -0
- package/.agents/skills/embedded-captions/scripts/fit-fonts.cjs +158 -0
- package/.agents/skills/embedded-captions/scripts/gen-stroke-path.py +46 -0
- package/.agents/skills/embedded-captions/scripts/inject-fonts.cjs +169 -0
- package/.agents/skills/embedded-captions/scripts/lib-dna.cjs +201 -0
- package/.agents/skills/embedded-captions/scripts/make-cinematic.cjs +1205 -0
- package/.agents/skills/embedded-captions/scripts/make-composition.cjs +404 -0
- package/.agents/skills/embedded-captions/scripts/make-theme.cjs +8781 -0
- package/.agents/skills/embedded-captions/scripts/matte.cjs +294 -0
- package/.agents/skills/embedded-captions/scripts/measure-layout.cjs +293 -0
- package/.agents/skills/embedded-captions/scripts/prepare.sh +39 -0
- package/.agents/skills/embedded-captions/scripts/preview-frames.cjs +268 -0
- package/.agents/skills/embedded-captions/scripts/render-and-composite.sh +509 -0
- package/.agents/skills/embedded-captions/scripts/render-theme.sh +34 -0
- package/.agents/skills/embedded-captions/scripts/safe-zones.cjs +813 -0
- package/.agents/skills/embedded-captions/scripts/transcribe.cjs +349 -0
- package/.agents/skills/embedded-captions/themes/PORTING.md +49 -0
- package/.agents/skills/embedded-captions/themes/README.md +244 -0
- package/.agents/skills/embedded-captions/themes/anchor.json +27 -0
- package/.agents/skills/embedded-captions/themes/arcade.json +51 -0
- package/.agents/skills/embedded-captions/themes/aurora.json +41 -0
- package/.agents/skills/embedded-captions/themes/biolume.json +35 -0
- package/.agents/skills/embedded-captions/themes/brush.json +74 -0
- package/.agents/skills/embedded-captions/themes/chalkboard.json +52 -0
- package/.agents/skills/embedded-captions/themes/dossier.json +56 -0
- package/.agents/skills/embedded-captions/themes/graffiti.json +62 -0
- package/.agents/skills/embedded-captions/themes/hologram.json +41 -0
- package/.agents/skills/embedded-captions/themes/inkwater.json +43 -0
- package/.agents/skills/embedded-captions/themes/laser.json +46 -0
- package/.agents/skills/embedded-captions/themes/lastpage.json +33 -0
- package/.agents/skills/embedded-captions/themes/neonsign.json +53 -0
- package/.agents/skills/embedded-captions/themes/nightcity.json +56 -0
- package/.agents/skills/embedded-captions/themes/ordnance.json +54 -0
- package/.agents/skills/embedded-captions/themes/papercut.json +37 -0
- package/.agents/skills/embedded-captions/themes/popup.json +46 -0
- package/.agents/skills/embedded-captions/themes/ransom.json +62 -0
- package/.agents/skills/embedded-captions/themes/scoreboard.json +54 -0
- package/.agents/skills/embedded-captions/themes/spectrum.json +46 -0
- package/.agents/skills/embedded-captions/themes/stardust.json +29 -0
- package/.agents/skills/embedded-captions/themes/stomp.json +43 -0
- package/.agents/skills/embedded-captions/themes/terminal.json +49 -0
- package/.agents/skills/embedded-captions/themes/thunder.json +44 -0
- package/.agents/skills/embedded-captions/themes/transit.json +44 -0
- package/.agents/skills/embedded-captions/themes/vhs.json +47 -0
- package/.agents/skills/faceless-explainer/SKILL.md +209 -0
- package/.agents/skills/faceless-explainer/references/cut-catalog.md +215 -0
- package/.agents/skills/faceless-explainer/references/motion-language.md +156 -0
- package/.agents/skills/faceless-explainer/references/story-design.md +248 -0
- package/.agents/skills/faceless-explainer/references/visual-design.md +146 -0
- package/.agents/skills/faceless-explainer/scripts/assemble-index.mjs +570 -0
- package/.agents/skills/faceless-explainer/scripts/audio.mjs +260 -0
- package/.agents/skills/faceless-explainer/scripts/build-frame.mjs +536 -0
- package/.agents/skills/faceless-explainer/scripts/captions.mjs +508 -0
- package/.agents/skills/faceless-explainer/scripts/lib/assets.mjs +55 -0
- package/.agents/skills/faceless-explainer/scripts/lib/dimensions.mjs +45 -0
- package/.agents/skills/faceless-explainer/scripts/lib/storyboard.mjs +249 -0
- package/.agents/skills/faceless-explainer/scripts/lib/tokens.mjs +204 -0
- package/.agents/skills/faceless-explainer/scripts/lib/transition-registry.mjs +38 -0
- package/.agents/skills/faceless-explainer/scripts/lib/transitions.json +71 -0
- package/.agents/skills/faceless-explainer/scripts/transitions.mjs +320 -0
- package/.agents/skills/faceless-explainer/sub-agents/frame-worker.md +75 -0
- package/.agents/skills/flockposter/LICENSE +17 -0
- package/.agents/skills/flockposter/README.md +72 -0
- package/.agents/skills/flockposter/SKILL.md +562 -0
- package/.agents/skills/flockposter/examples/cli-instagram-reel.sh +21 -0
- package/.agents/skills/flockposter/examples/cli-multi-platform.json +69 -0
- package/.agents/skills/flockposter/examples/cli-tiktok-upload-only.sh +22 -0
- package/.agents/skills/flockposter/examples/cli-x-thread.sh +17 -0
- package/.agents/skills/flockposter/examples/cli-youtube-short.sh +21 -0
- package/.agents/skills/flockposter/examples/public-api-instagram-reel.json +28 -0
- package/.agents/skills/general-video/SKILL.md +143 -0
- package/.agents/skills/hyperframes/SKILL.md +160 -0
- package/.agents/skills/hyperframes-animation/SKILL.md +84 -0
- package/.agents/skills/hyperframes-animation/adapters/animate-text.md +64 -0
- package/.agents/skills/hyperframes-animation/adapters/animejs.md +114 -0
- package/.agents/skills/hyperframes-animation/adapters/css-animations.md +143 -0
- package/.agents/skills/hyperframes-animation/adapters/gsap-easing-and-stagger.md +118 -0
- package/.agents/skills/hyperframes-animation/adapters/gsap-timeline-and-labels.md +96 -0
- package/.agents/skills/hyperframes-animation/adapters/gsap-transforms-and-perf.md +96 -0
- package/.agents/skills/hyperframes-animation/adapters/gsap.md +105 -0
- package/.agents/skills/hyperframes-animation/adapters/html-in-canvas-patterns.md +507 -0
- package/.agents/skills/hyperframes-animation/adapters/lottie.md +117 -0
- package/.agents/skills/hyperframes-animation/adapters/three.md +131 -0
- package/.agents/skills/hyperframes-animation/adapters/typegpu.md +178 -0
- package/.agents/skills/hyperframes-animation/adapters/waapi.md +101 -0
- package/.agents/skills/hyperframes-animation/blueprints/comparison-split.md +27 -0
- package/.agents/skills/hyperframes-animation/blueprints/constellation-hub.md +44 -0
- package/.agents/skills/hyperframes-animation/blueprints/cta-morph-press.md +28 -0
- package/.agents/skills/hyperframes-animation/blueprints/cursor-ui-demo.md +57 -0
- package/.agents/skills/hyperframes-animation/blueprints/dataviz-countup.md +46 -0
- package/.agents/skills/hyperframes-animation/blueprints/device-surface-showcase.md +53 -0
- package/.agents/skills/hyperframes-animation/blueprints/grid-card-assemble.md +66 -0
- package/.agents/skills/hyperframes-animation/blueprints/kinetic-type-beats.md +78 -0
- package/.agents/skills/hyperframes-animation/blueprints/logo-assemble-lockup.md +69 -0
- package/.agents/skills/hyperframes-animation/blueprints/overwhelm-surround.md +28 -0
- package/.agents/skills/hyperframes-animation/blueprints/spatial-pan-stations.md +37 -0
- package/.agents/skills/hyperframes-animation/blueprints/ticker-takeover.md +29 -0
- package/.agents/skills/hyperframes-animation/blueprints/titlecard-reveal.md +42 -0
- package/.agents/skills/hyperframes-animation/blueprints/typewriter-reveal.md +51 -0
- package/.agents/skills/hyperframes-animation/blueprints/video-text-pivot.md +30 -0
- package/.agents/skills/hyperframes-animation/blueprints-index.md +146 -0
- package/.agents/skills/hyperframes-animation/examples/assets/avatars/02.avif +0 -0
- package/.agents/skills/hyperframes-animation/examples/assets/brands/github.avif +0 -0
- package/.agents/skills/hyperframes-animation/examples/assets/brands/nvidia.avif +0 -0
- package/.agents/skills/hyperframes-animation/examples/assets/brands/visa.avif +0 -0
- package/.agents/skills/hyperframes-animation/examples/assets/brands/zoominfo.avif +0 -0
- package/.agents/skills/hyperframes-animation/examples/brand-reveal-assemble-zoom.html +382 -0
- package/.agents/skills/hyperframes-animation/examples/comparison-split-cards.html +649 -0
- package/.agents/skills/hyperframes-animation/examples/concept-demo-decode-pan.html +520 -0
- package/.agents/skills/hyperframes-animation/examples/cta-morph-press.html +468 -0
- package/.agents/skills/hyperframes-animation/examples/cta-orbit-collapse.html +1298 -0
- package/.agents/skills/hyperframes-animation/examples/demo-page-scroll-spotlight.html +759 -0
- package/.agents/skills/hyperframes-animation/examples/hook-counter-burst.html +729 -0
- package/.agents/skills/hyperframes-animation/examples/messaging-multi-phrase.html +352 -0
- package/.agents/skills/hyperframes-animation/examples/metric-video-text-pivot.html +779 -0
- package/.agents/skills/hyperframes-animation/examples/problem-mockup-overwhelm.html +1374 -0
- package/.agents/skills/hyperframes-animation/examples/proof-logo-chain.html +861 -0
- package/.agents/skills/hyperframes-animation/examples/takeover-ticker-displace.html +347 -0
- package/.agents/skills/hyperframes-animation/examples/workflow-approve-press.html +606 -0
- package/.agents/skills/hyperframes-animation/rules/3d-page-scroll.md +227 -0
- package/.agents/skills/hyperframes-animation/rules/3d-text-depth-layers.md +297 -0
- package/.agents/skills/hyperframes-animation/rules/ai-tracking-box.md +382 -0
- package/.agents/skills/hyperframes-animation/rules/ambient-glow-bloom.md +305 -0
- package/.agents/skills/hyperframes-animation/rules/asr-keyword-glow.md +286 -0
- package/.agents/skills/hyperframes-animation/rules/avatar-cloud-network.md +371 -0
- package/.agents/skills/hyperframes-animation/rules/camera-cursor-tracking.md +246 -0
- package/.agents/skills/hyperframes-animation/rules/card-morph-anchor.md +267 -0
- package/.agents/skills/hyperframes-animation/rules/center-outward-expansion.md +227 -0
- package/.agents/skills/hyperframes-animation/rules/context-sensitive-cursor.md +257 -0
- package/.agents/skills/hyperframes-animation/rules/coordinate-target-zoom.md +332 -0
- package/.agents/skills/hyperframes-animation/rules/counting-dynamic-scale.md +283 -0
- package/.agents/skills/hyperframes-animation/rules/css-marker-patterns.md +373 -0
- package/.agents/skills/hyperframes-animation/rules/cursor-click-ripple.md +262 -0
- package/.agents/skills/hyperframes-animation/rules/depth-of-field-blur.md +313 -0
- package/.agents/skills/hyperframes-animation/rules/depth-scatter-assemble.md +303 -0
- package/.agents/skills/hyperframes-animation/rules/discrete-text-sequence.md +273 -0
- package/.agents/skills/hyperframes-animation/rules/dynamic-content-sequencing.md +307 -0
- package/.agents/skills/hyperframes-animation/rules/gsap-effects.md +299 -0
- package/.agents/skills/hyperframes-animation/rules/hacker-flip-3d.md +223 -0
- package/.agents/skills/hyperframes-animation/rules/kinetic-beat-slam.md +183 -0
- package/.agents/skills/hyperframes-animation/rules/motion-blur-streak.md +328 -0
- package/.agents/skills/hyperframes-animation/rules/multi-phase-camera.md +273 -0
- package/.agents/skills/hyperframes-animation/rules/orbit-3d-entry.md +301 -0
- package/.agents/skills/hyperframes-animation/rules/physics-press-reaction.md +350 -0
- package/.agents/skills/hyperframes-animation/rules/press-release-spring.md +296 -0
- package/.agents/skills/hyperframes-animation/rules/reactive-displacement.md +277 -0
- package/.agents/skills/hyperframes-animation/rules/scale-swap-transition.md +298 -0
- package/.agents/skills/hyperframes-animation/rules/sine-wave-loop.md +278 -0
- package/.agents/skills/hyperframes-animation/rules/split-tilt-cards.md +277 -0
- package/.agents/skills/hyperframes-animation/rules/spring-pop-entrance.md +273 -0
- package/.agents/skills/hyperframes-animation/rules/stat-bars-and-fills.md +156 -0
- package/.agents/skills/hyperframes-animation/rules/svg-icon-enrichment.md +329 -0
- package/.agents/skills/hyperframes-animation/rules/svg-path-draw.md +274 -0
- package/.agents/skills/hyperframes-animation/rules/vertical-spring-ticker.md +239 -0
- package/.agents/skills/hyperframes-animation/rules/viewport-change.md +349 -0
- package/.agents/skills/hyperframes-animation/rules-index.md +86 -0
- package/.agents/skills/hyperframes-animation/scripts/animation-map.mjs +606 -0
- package/.agents/skills/hyperframes-animation/scripts/package-loader.mjs +288 -0
- package/.agents/skills/hyperframes-animation/scripts/package-loader.test.mjs +62 -0
- package/.agents/skills/hyperframes-animation/techniques.md +507 -0
- package/.agents/skills/hyperframes-animation/transitions/TRANSITION-REGISTRY.md +167 -0
- package/.agents/skills/hyperframes-animation/transitions/catalog.md +127 -0
- package/.agents/skills/hyperframes-animation/transitions/css-3d.md +12 -0
- package/.agents/skills/hyperframes-animation/transitions/css-blur.md +51 -0
- package/.agents/skills/hyperframes-animation/transitions/css-cover.md +43 -0
- package/.agents/skills/hyperframes-animation/transitions/css-destruction.md +95 -0
- package/.agents/skills/hyperframes-animation/transitions/css-dissolve.md +66 -0
- package/.agents/skills/hyperframes-animation/transitions/css-distortion.md +45 -0
- package/.agents/skills/hyperframes-animation/transitions/css-grid.md +10 -0
- package/.agents/skills/hyperframes-animation/transitions/css-light.md +49 -0
- package/.agents/skills/hyperframes-animation/transitions/css-mechanical.md +30 -0
- package/.agents/skills/hyperframes-animation/transitions/css-other.md +25 -0
- package/.agents/skills/hyperframes-animation/transitions/css-push.md +41 -0
- package/.agents/skills/hyperframes-animation/transitions/css-radial.md +37 -0
- package/.agents/skills/hyperframes-animation/transitions/css-scale.md +24 -0
- package/.agents/skills/hyperframes-animation/transitions/overview.md +153 -0
- package/.agents/skills/hyperframes-cli/SKILL.md +113 -0
- package/.agents/skills/hyperframes-cli/references/doctor-browser.md +45 -0
- package/.agents/skills/hyperframes-cli/references/init-and-scaffold.md +55 -0
- package/.agents/skills/hyperframes-cli/references/lambda.md +132 -0
- package/.agents/skills/hyperframes-cli/references/lint-validate-inspect.md +121 -0
- package/.agents/skills/hyperframes-cli/references/preview-render.md +149 -0
- package/.agents/skills/hyperframes-cli/references/upgrade-info-misc.md +75 -0
- package/.agents/skills/hyperframes-core/SKILL.md +78 -0
- package/.agents/skills/hyperframes-core/references/composition-patterns.md +263 -0
- package/.agents/skills/hyperframes-core/references/data-attributes.md +70 -0
- package/.agents/skills/hyperframes-core/references/determinism-rules.md +68 -0
- package/.agents/skills/hyperframes-core/references/full-screen-motion.md +62 -0
- package/.agents/skills/hyperframes-core/references/minimal-composition.md +66 -0
- package/.agents/skills/hyperframes-core/references/script-format.md +49 -0
- package/.agents/skills/hyperframes-core/references/storyboard-format.md +95 -0
- package/.agents/skills/hyperframes-core/references/sub-compositions.md +237 -0
- package/.agents/skills/hyperframes-core/references/subagent-dispatch.md +41 -0
- package/.agents/skills/hyperframes-core/references/tailwind.md +125 -0
- package/.agents/skills/hyperframes-core/references/tracks-and-clips.md +76 -0
- package/.agents/skills/hyperframes-core/references/variables-and-media.md +90 -0
- package/.agents/skills/hyperframes-creative/SKILL.md +70 -0
- package/.agents/skills/hyperframes-creative/frame-presets/biennale-yellow/FRAME.md +289 -0
- package/.agents/skills/hyperframes-creative/frame-presets/biennale-yellow/caption-skin.html +221 -0
- package/.agents/skills/hyperframes-creative/frame-presets/biennale-yellow/frame-showcase.html +1214 -0
- package/.agents/skills/hyperframes-creative/frame-presets/blockframe/FRAME.md +275 -0
- package/.agents/skills/hyperframes-creative/frame-presets/blockframe/caption-skin.html +224 -0
- package/.agents/skills/hyperframes-creative/frame-presets/blockframe/frame-showcase.html +1347 -0
- package/.agents/skills/hyperframes-creative/frame-presets/blue-professional/FRAME.md +307 -0
- package/.agents/skills/hyperframes-creative/frame-presets/blue-professional/caption-skin.html +223 -0
- package/.agents/skills/hyperframes-creative/frame-presets/blue-professional/frame-showcase.html +1372 -0
- package/.agents/skills/hyperframes-creative/frame-presets/bold-poster/FRAME.md +275 -0
- package/.agents/skills/hyperframes-creative/frame-presets/bold-poster/caption-skin.html +230 -0
- package/.agents/skills/hyperframes-creative/frame-presets/bold-poster/frame-showcase.html +1140 -0
- package/.agents/skills/hyperframes-creative/frame-presets/broadside/FRAME.md +284 -0
- package/.agents/skills/hyperframes-creative/frame-presets/broadside/caption-skin.html +225 -0
- package/.agents/skills/hyperframes-creative/frame-presets/broadside/frame-showcase.html +1166 -0
- package/.agents/skills/hyperframes-creative/frame-presets/capsule/FRAME.md +284 -0
- package/.agents/skills/hyperframes-creative/frame-presets/capsule/caption-skin.html +224 -0
- package/.agents/skills/hyperframes-creative/frame-presets/capsule/frame-showcase.html +1465 -0
- package/.agents/skills/hyperframes-creative/frame-presets/cartesian/FRAME.md +278 -0
- package/.agents/skills/hyperframes-creative/frame-presets/cartesian/caption-skin.html +222 -0
- package/.agents/skills/hyperframes-creative/frame-presets/cartesian/frame-showcase.html +1263 -0
- package/.agents/skills/hyperframes-creative/frame-presets/claude/FRAME.md +277 -0
- package/.agents/skills/hyperframes-creative/frame-presets/claude/caption-skin.html +224 -0
- package/.agents/skills/hyperframes-creative/frame-presets/claude/frame-showcase.html +1439 -0
- package/.agents/skills/hyperframes-creative/frame-presets/cobalt-grid/FRAME.md +265 -0
- package/.agents/skills/hyperframes-creative/frame-presets/cobalt-grid/caption-skin.html +238 -0
- package/.agents/skills/hyperframes-creative/frame-presets/cobalt-grid/frame-showcase.html +1468 -0
- package/.agents/skills/hyperframes-creative/frame-presets/coral/FRAME.md +314 -0
- package/.agents/skills/hyperframes-creative/frame-presets/coral/caption-skin.html +226 -0
- package/.agents/skills/hyperframes-creative/frame-presets/coral/frame-showcase.html +1268 -0
- package/.agents/skills/hyperframes-creative/frame-presets/creative-mode/FRAME.md +333 -0
- package/.agents/skills/hyperframes-creative/frame-presets/creative-mode/caption-skin.html +227 -0
- package/.agents/skills/hyperframes-creative/frame-presets/creative-mode/frame-showcase.html +1330 -0
- package/.agents/skills/hyperframes-creative/frame-presets/daisy-days/FRAME.md +274 -0
- package/.agents/skills/hyperframes-creative/frame-presets/daisy-days/caption-skin.html +230 -0
- package/.agents/skills/hyperframes-creative/frame-presets/daisy-days/frame-showcase.html +1444 -0
- package/.agents/skills/hyperframes-creative/frame-presets/editorial-forest/FRAME.md +265 -0
- package/.agents/skills/hyperframes-creative/frame-presets/editorial-forest/caption-skin.html +223 -0
- package/.agents/skills/hyperframes-creative/frame-presets/editorial-forest/frame-showcase.html +1273 -0
- package/.agents/skills/hyperframes-creative/palettes/bold-energetic.md +14 -0
- package/.agents/skills/hyperframes-creative/palettes/clean-corporate.md +14 -0
- package/.agents/skills/hyperframes-creative/palettes/dark-premium.md +14 -0
- package/.agents/skills/hyperframes-creative/palettes/jewel-rich.md +14 -0
- package/.agents/skills/hyperframes-creative/palettes/monochrome.md +14 -0
- package/.agents/skills/hyperframes-creative/palettes/nature-earth.md +14 -0
- package/.agents/skills/hyperframes-creative/palettes/neon-electric.md +14 -0
- package/.agents/skills/hyperframes-creative/palettes/pastel-soft.md +14 -0
- package/.agents/skills/hyperframes-creative/palettes/warm-editorial.md +14 -0
- package/.agents/skills/hyperframes-creative/references/audio-reactive.md +76 -0
- package/.agents/skills/hyperframes-creative/references/beat-direction.md +164 -0
- package/.agents/skills/hyperframes-creative/references/composition-patterns.md +199 -0
- package/.agents/skills/hyperframes-creative/references/data-in-motion.md +19 -0
- package/.agents/skills/hyperframes-creative/references/design-adherence.md +19 -0
- package/.agents/skills/hyperframes-creative/references/design-picker.md +123 -0
- package/.agents/skills/hyperframes-creative/references/design-spec.md +55 -0
- package/.agents/skills/hyperframes-creative/references/house-style.md +73 -0
- package/.agents/skills/hyperframes-creative/references/motion-principles.md +150 -0
- package/.agents/skills/hyperframes-creative/references/narration.md +92 -0
- package/.agents/skills/hyperframes-creative/references/prompt-expansion.md +68 -0
- package/.agents/skills/hyperframes-creative/references/typography.md +218 -0
- package/.agents/skills/hyperframes-creative/references/video-composition.md +63 -0
- package/.agents/skills/hyperframes-creative/references/visual-styles.md +457 -0
- package/.agents/skills/hyperframes-creative/scripts/contrast-report.mjs +353 -0
- package/.agents/skills/hyperframes-creative/scripts/extract-audio-data.py +188 -0
- package/.agents/skills/hyperframes-creative/scripts/package-loader.mjs +288 -0
- package/.agents/skills/hyperframes-creative/scripts/package-loader.test.mjs +62 -0
- package/.agents/skills/hyperframes-creative/templates/design-picker.html +1432 -0
- package/.agents/skills/hyperframes-keyframes/SKILL.md +237 -0
- package/.agents/skills/hyperframes-keyframes/agents/openai.yaml +4 -0
- package/.agents/skills/hyperframes-keyframes/references/keyframe-patterns.md +106 -0
- package/.agents/skills/motion-graphics/SKILL.md +172 -0
- package/.agents/skills/motion-graphics/agents/builder.md +40 -0
- package/.agents/skills/motion-graphics/agents/director.md +53 -0
- package/.agents/skills/motion-graphics/agents/finalize.md +17 -0
- package/.agents/skills/motion-graphics/catalog-map.md +40 -0
- package/.agents/skills/motion-graphics/categories/asset-fusion/module.md +37 -0
- package/.agents/skills/motion-graphics/categories/charts/module.md +21 -0
- package/.agents/skills/motion-graphics/categories/kinetic-type/module.md +19 -0
- package/.agents/skills/motion-graphics/categories/logo-reveal/module.md +17 -0
- package/.agents/skills/motion-graphics/categories/lower-thirds/module.md +16 -0
- package/.agents/skills/motion-graphics/categories/maps/bake-basemap.mjs +273 -0
- package/.agents/skills/motion-graphics/categories/maps/module.md +61 -0
- package/.agents/skills/motion-graphics/categories/news/module.md +56 -0
- package/.agents/skills/motion-graphics/categories/stat/module.md +21 -0
- package/.agents/skills/motion-graphics/categories/tweet/module.md +16 -0
- package/.agents/skills/motion-graphics/categories/webpage/module.md +21 -0
- package/.agents/skills/motion-graphics/grounding/PROTOCOL.md +64 -0
- package/.agents/skills/motion-graphics/grounding/locate.mjs +227 -0
- package/.agents/skills/motion-graphics/phases/source/guide.md +21 -0
- package/.agents/skills/motion-graphics/references/builder-contract.md +38 -0
- package/.agents/skills/motion-graphics/references/motion-vocabulary.md +43 -0
- package/.agents/skills/motion-graphics/references/shot-plan-ir.md +54 -0
- package/.agents/skills/motion-graphics/samples/asset-fusion/_ref-circle-highlight.html +306 -0
- package/.agents/skills/product-launch-video/SKILL.md +208 -0
- package/.agents/skills/product-launch-video/references/cut-catalog.md +220 -0
- package/.agents/skills/product-launch-video/references/motion-language.md +156 -0
- package/.agents/skills/product-launch-video/references/story-design.md +373 -0
- package/.agents/skills/product-launch-video/references/visual-design.md +126 -0
- package/.agents/skills/product-launch-video/scripts/assemble-index.mjs +570 -0
- package/.agents/skills/product-launch-video/scripts/audio.mjs +260 -0
- package/.agents/skills/product-launch-video/scripts/build-frame.mjs +536 -0
- package/.agents/skills/product-launch-video/scripts/captions.mjs +508 -0
- package/.agents/skills/product-launch-video/scripts/lib/assets.mjs +55 -0
- package/.agents/skills/product-launch-video/scripts/lib/dimensions.mjs +45 -0
- package/.agents/skills/product-launch-video/scripts/lib/pad-frame-duration.mjs +36 -0
- package/.agents/skills/product-launch-video/scripts/lib/pad-frame-duration.test.mjs +76 -0
- package/.agents/skills/product-launch-video/scripts/lib/storyboard.mjs +249 -0
- package/.agents/skills/product-launch-video/scripts/lib/tokens.mjs +204 -0
- package/.agents/skills/product-launch-video/scripts/lib/transition-registry.mjs +38 -0
- package/.agents/skills/product-launch-video/scripts/lib/transitions.json +71 -0
- package/.agents/skills/product-launch-video/scripts/stage-assets.mjs +39 -0
- package/.agents/skills/product-launch-video/scripts/transitions.mjs +327 -0
- package/.agents/skills/product-launch-video/sub-agents/frame-worker.md +75 -0
- package/.agents/skills/slideshow/SKILL.md +550 -0
- package/.agents/skills/slideshow/references/standalone-harness.md +1020 -0
- package/.agents/skills/talking-head-recut/NOTICE.md +39 -0
- package/.agents/skills/talking-head-recut/SKILL.md +1195 -0
- package/.agents/skills/talking-head-recut/assets/vendor/gsap.min.js +10 -0
- package/.agents/skills/talking-head-recut/references/DESIGN_INDEX.md +145 -0
- package/.agents/skills/talking-head-recut/references/frames/clean.html +92 -0
- package/.agents/skills/talking-head-recut/references/frames/hairline.html +171 -0
- package/.agents/skills/talking-head-recut/references/frames/polaroid.html +131 -0
- package/.agents/skills/talking-head-recut/references/layouts/overlay.html +164 -0
- package/.agents/skills/talking-head-recut/references/layouts/pip.html +143 -0
- package/.agents/skills/talking-head-recut/references/layouts/split.html +121 -0
- package/.agents/skills/talking-head-recut/references/layouts/stack.html +109 -0
- package/.agents/skills/talking-head-recut/references/styles/academic.html +172 -0
- package/.agents/skills/talking-head-recut/references/styles/audit.html +170 -0
- package/.agents/skills/talking-head-recut/references/styles/editorial.html +189 -0
- package/.agents/skills/talking-head-recut/references/styles/geom.html +181 -0
- package/.agents/skills/talking-head-recut/references/styles/minimal.html +130 -0
- package/.agents/skills/talking-head-recut/references/styles/spotlight.html +142 -0
- package/.agents/skills/talking-head-recut/references/styles/swiss.html +188 -0
- package/.agents/skills/talking-head-recut/references/styles/terminal.html +196 -0
- package/.agents/skills/talking-head-recut/references/styles/whiteboard.html +170 -0
- package/.agents/skills/talking-head-recut/references/styles/xhs.html +206 -0
- package/.agents/skills/vidfarm-media/SKILL.md +85 -0
- package/.agents/skills/vidfarm-media/references/tts.md +54 -0
- package/.agents/skills/vidfarm-media/scripts/audio.mjs +628 -0
- package/.agents/skills/vidfarm-media/scripts/wait-bgm.mjs +31 -0
- package/.agents/skills/website-to-video/SKILL.md +145 -0
- package/.agents/skills/website-to-video/assets/sfx/CREDITS.md +35 -0
- package/.agents/skills/website-to-video/assets/sfx/manifest.json +97 -0
- package/.agents/skills/website-to-video/references/beat-builder-guide.md +263 -0
- package/.agents/skills/website-to-video/references/capabilities.md +713 -0
- package/.agents/skills/website-to-video/references/step-0-capture.md +55 -0
- package/.agents/skills/website-to-video/references/step-1-design.md +333 -0
- package/.agents/skills/website-to-video/references/step-2-brief.md +178 -0
- package/.agents/skills/website-to-video/references/step-3-storyboard.md +572 -0
- package/.agents/skills/website-to-video/references/step-4-vo.md +225 -0
- package/.agents/skills/website-to-video/references/step-5-build.md +483 -0
- package/.agents/skills/website-to-video/references/step-6-validate.md +341 -0
- package/.agents/skills/website-to-video/scripts/w2h-verify.mjs +759 -0
- package/SKILL.director.md +37 -0
- package/SKILL.platform.md +6 -1
- package/demo/dist/app.js +295 -11
- package/dist/src/app.js +317 -133
- package/dist/src/cli.js +529 -12
- package/dist/src/composition-runtime.js +262 -3
- package/dist/src/devcli/doctor.js +192 -0
- package/dist/src/devcli/hyperframes-cli.js +118 -0
- package/dist/src/devcli/skills.js +476 -0
- package/dist/src/devcli/stills.js +249 -0
- package/dist/src/editor-chat.js +255 -0
- package/dist/src/hyperframes/composition.js +5 -5
- package/dist/src/services/composition-lint.js +199 -0
- package/dist/src/services/hyperframes.js +67 -13
- package/package.json +2 -1
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
# CSS Patterns for Marker Highlighting
|
|
2
|
+
|
|
3
|
+
Pure CSS + GSAP implementations of all five MarkerHighlight.js drawing modes. Use these for deterministic rendering in HyperFrames compositions — no external library dependency, full GSAP timeline control.
|
|
4
|
+
|
|
5
|
+
## Contents
|
|
6
|
+
|
|
7
|
+
- [1. Highlight Mode](#1-highlight-mode) — Yellow marker sweep behind text
|
|
8
|
+
- [2. Circle Mode](#2-circle-mode) — Hand-drawn ellipse around text
|
|
9
|
+
- [3. Burst Mode](#3-burst-mode) — Radiating lines from text
|
|
10
|
+
- [4. Scribble Mode](#4-scribble-mode) — Chaotic scribble over text
|
|
11
|
+
- [5. Sketchout Mode](#5-sketchout-mode) — Rough rectangle outline
|
|
12
|
+
|
|
13
|
+
## 1. Highlight Mode
|
|
14
|
+
|
|
15
|
+
Yellow marker sweep behind text. The most common mode.
|
|
16
|
+
|
|
17
|
+
```html
|
|
18
|
+
<span class="mh-highlight-wrap">
|
|
19
|
+
<span class="mh-highlight-bar" id="hl-1"></span>
|
|
20
|
+
<span class="mh-highlight-text">highlighted text</span>
|
|
21
|
+
</span>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
```css
|
|
25
|
+
.mh-highlight-wrap {
|
|
26
|
+
position: relative;
|
|
27
|
+
display: inline;
|
|
28
|
+
}
|
|
29
|
+
.mh-highlight-bar {
|
|
30
|
+
position: absolute;
|
|
31
|
+
top: 0;
|
|
32
|
+
left: -6px;
|
|
33
|
+
right: -6px;
|
|
34
|
+
bottom: 0;
|
|
35
|
+
background: #fdd835;
|
|
36
|
+
opacity: 0.35;
|
|
37
|
+
transform: scaleX(0);
|
|
38
|
+
transform-origin: left center;
|
|
39
|
+
border-radius: 3px;
|
|
40
|
+
z-index: 0;
|
|
41
|
+
}
|
|
42
|
+
.mh-highlight-text {
|
|
43
|
+
position: relative;
|
|
44
|
+
z-index: 1;
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
```js
|
|
49
|
+
// Sweep in from left
|
|
50
|
+
tl.to("#hl-1", { scaleX: 1, duration: 0.5, ease: "power2.out" }, 0.6);
|
|
51
|
+
|
|
52
|
+
// Optional: skew for hand-drawn feel
|
|
53
|
+
// gsap.set("#hl-1", { skewX: -2 });
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Multi-line Highlight
|
|
57
|
+
|
|
58
|
+
Stagger bars across multiple lines:
|
|
59
|
+
|
|
60
|
+
```js
|
|
61
|
+
tl.to(
|
|
62
|
+
".mh-highlight-bar",
|
|
63
|
+
{
|
|
64
|
+
scaleX: 1,
|
|
65
|
+
duration: 0.5,
|
|
66
|
+
ease: "power2.out",
|
|
67
|
+
stagger: 0.3,
|
|
68
|
+
},
|
|
69
|
+
0.6,
|
|
70
|
+
);
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## 2. Circle Mode
|
|
74
|
+
|
|
75
|
+
Hand-drawn circle around text. Use `border-radius: 50%` with a slight rotation for organic feel.
|
|
76
|
+
|
|
77
|
+
```html
|
|
78
|
+
<span class="mh-circle-wrap">
|
|
79
|
+
<span class="mh-circle-text" id="circle-word">IMPORTANT</span>
|
|
80
|
+
<span class="mh-circle-ring" id="circle-1"></span>
|
|
81
|
+
</span>
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
```css
|
|
85
|
+
.mh-circle-wrap {
|
|
86
|
+
position: relative;
|
|
87
|
+
display: inline;
|
|
88
|
+
}
|
|
89
|
+
.mh-circle-text {
|
|
90
|
+
position: relative;
|
|
91
|
+
z-index: 1;
|
|
92
|
+
}
|
|
93
|
+
.mh-circle-ring {
|
|
94
|
+
position: absolute;
|
|
95
|
+
top: 50%;
|
|
96
|
+
left: 50%;
|
|
97
|
+
width: 130%;
|
|
98
|
+
height: 160%;
|
|
99
|
+
transform: translate(-50%, -50%) rotate(-3deg) scale(0);
|
|
100
|
+
border: 3px solid #e53935;
|
|
101
|
+
border-radius: 50%;
|
|
102
|
+
pointer-events: none;
|
|
103
|
+
z-index: 0;
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
```js
|
|
108
|
+
// Circle scales in with a wobble
|
|
109
|
+
tl.to(
|
|
110
|
+
"#circle-1",
|
|
111
|
+
{
|
|
112
|
+
scale: 1,
|
|
113
|
+
rotation: -3,
|
|
114
|
+
duration: 0.6,
|
|
115
|
+
ease: "back.out(1.7)",
|
|
116
|
+
transformOrigin: "center center",
|
|
117
|
+
},
|
|
118
|
+
0.7,
|
|
119
|
+
);
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### Variations
|
|
123
|
+
|
|
124
|
+
```css
|
|
125
|
+
/* Tighter circle (for short words) */
|
|
126
|
+
.mh-circle-ring.tight {
|
|
127
|
+
width: 150%;
|
|
128
|
+
height: 180%;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/* Squared circle (rounded rectangle) */
|
|
132
|
+
.mh-circle-ring.rounded {
|
|
133
|
+
border-radius: 30%;
|
|
134
|
+
width: 120%;
|
|
135
|
+
height: 140%;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/* Ellipse (wider than tall) */
|
|
139
|
+
.mh-circle-ring.ellipse {
|
|
140
|
+
width: 150%;
|
|
141
|
+
height: 130%;
|
|
142
|
+
border-radius: 50%;
|
|
143
|
+
}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## 3. Burst Mode
|
|
147
|
+
|
|
148
|
+
Radiating lines from text center. Each line is a positioned div rotated to its angle.
|
|
149
|
+
|
|
150
|
+
```html
|
|
151
|
+
<span class="mh-burst-wrap">
|
|
152
|
+
<span class="mh-burst-text">WOW</span>
|
|
153
|
+
<span class="mh-burst-container" id="burst-1">
|
|
154
|
+
<span class="mh-burst-line" style="--angle: 0deg; --len: 70px;"></span>
|
|
155
|
+
<span class="mh-burst-line" style="--angle: 30deg; --len: 55px;"></span>
|
|
156
|
+
<span class="mh-burst-line" style="--angle: 60deg; --len: 80px;"></span>
|
|
157
|
+
<span class="mh-burst-line" style="--angle: 90deg; --len: 45px;"></span>
|
|
158
|
+
<span class="mh-burst-line" style="--angle: 120deg; --len: 65px;"></span>
|
|
159
|
+
<span class="mh-burst-line" style="--angle: 150deg; --len: 75px;"></span>
|
|
160
|
+
<span class="mh-burst-line" style="--angle: 180deg; --len: 50px;"></span>
|
|
161
|
+
<span class="mh-burst-line" style="--angle: 210deg; --len: 60px;"></span>
|
|
162
|
+
<span class="mh-burst-line" style="--angle: 240deg; --len: 80px;"></span>
|
|
163
|
+
<span class="mh-burst-line" style="--angle: 270deg; --len: 40px;"></span>
|
|
164
|
+
<span class="mh-burst-line" style="--angle: 300deg; --len: 70px;"></span>
|
|
165
|
+
<span class="mh-burst-line" style="--angle: 330deg; --len: 55px;"></span>
|
|
166
|
+
</span>
|
|
167
|
+
</span>
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
```css
|
|
171
|
+
.mh-burst-wrap {
|
|
172
|
+
position: relative;
|
|
173
|
+
display: inline;
|
|
174
|
+
}
|
|
175
|
+
.mh-burst-text {
|
|
176
|
+
position: relative;
|
|
177
|
+
z-index: 2;
|
|
178
|
+
}
|
|
179
|
+
.mh-burst-container {
|
|
180
|
+
position: absolute;
|
|
181
|
+
top: 50%;
|
|
182
|
+
left: 50%;
|
|
183
|
+
width: 0;
|
|
184
|
+
height: 0;
|
|
185
|
+
z-index: 1;
|
|
186
|
+
}
|
|
187
|
+
.mh-burst-line {
|
|
188
|
+
position: absolute;
|
|
189
|
+
display: block;
|
|
190
|
+
width: 3px;
|
|
191
|
+
height: var(--len);
|
|
192
|
+
background: #1e88e5;
|
|
193
|
+
left: -1.5px;
|
|
194
|
+
top: calc(-1 * var(--len));
|
|
195
|
+
transform: rotate(var(--angle));
|
|
196
|
+
transform-origin: bottom center;
|
|
197
|
+
opacity: 0;
|
|
198
|
+
}
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
```js
|
|
202
|
+
// All lines burst outward simultaneously with slight stagger
|
|
203
|
+
tl.fromTo(
|
|
204
|
+
"#burst-1 .mh-burst-line",
|
|
205
|
+
{ scaleY: 0, opacity: 0 },
|
|
206
|
+
{ scaleY: 1, opacity: 1, duration: 0.4, ease: "power2.out", stagger: 0.03 },
|
|
207
|
+
0.7,
|
|
208
|
+
);
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
**Vary line lengths** (40-80px range) for an organic, hand-drawn feel. Equal lengths look mechanical.
|
|
212
|
+
|
|
213
|
+
## 4. Scribble Mode
|
|
214
|
+
|
|
215
|
+
Wavy SVG underlines and strikethroughs that draw themselves via `stroke-dashoffset`.
|
|
216
|
+
|
|
217
|
+
```html
|
|
218
|
+
<span class="mh-scribble-wrap">
|
|
219
|
+
<span class="mh-scribble-text">underlined text</span>
|
|
220
|
+
<svg class="mh-scribble-svg" viewBox="0 0 500 24" preserveAspectRatio="none">
|
|
221
|
+
<path
|
|
222
|
+
id="scribble-1"
|
|
223
|
+
d="M0,12 Q31,0 62,12 Q93,24 125,12 Q156,0 187,12 Q218,24 250,12 Q281,0 312,12 Q343,24 375,12 Q406,0 437,12 Q468,24 500,12"
|
|
224
|
+
fill="none"
|
|
225
|
+
stroke="#FDD835"
|
|
226
|
+
stroke-width="3"
|
|
227
|
+
stroke-linecap="round"
|
|
228
|
+
/>
|
|
229
|
+
</svg>
|
|
230
|
+
</div>
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
```css
|
|
234
|
+
.mh-scribble-wrap {
|
|
235
|
+
position: relative;
|
|
236
|
+
display: inline;
|
|
237
|
+
}
|
|
238
|
+
.mh-scribble-text {
|
|
239
|
+
position: relative;
|
|
240
|
+
z-index: 1;
|
|
241
|
+
}
|
|
242
|
+
.mh-scribble-svg {
|
|
243
|
+
position: absolute;
|
|
244
|
+
left: 0;
|
|
245
|
+
bottom: -6px;
|
|
246
|
+
width: 100%;
|
|
247
|
+
height: 24px;
|
|
248
|
+
z-index: 0;
|
|
249
|
+
}
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
```js
|
|
253
|
+
// Measure path length and set initial dash state
|
|
254
|
+
var path = document.querySelector("#scribble-1");
|
|
255
|
+
var len = path.getTotalLength();
|
|
256
|
+
gsap.set(path, { strokeDasharray: len, strokeDashoffset: len });
|
|
257
|
+
|
|
258
|
+
// Draw the line
|
|
259
|
+
tl.to(
|
|
260
|
+
"#scribble-1",
|
|
261
|
+
{
|
|
262
|
+
strokeDashoffset: 0,
|
|
263
|
+
duration: 0.8,
|
|
264
|
+
ease: "power1.inOut",
|
|
265
|
+
},
|
|
266
|
+
0.7,
|
|
267
|
+
);
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
### Strikethrough Variant
|
|
271
|
+
|
|
272
|
+
Position the SVG at `top: 50%; transform: translateY(-50%)` instead of `bottom: -6px`.
|
|
273
|
+
|
|
274
|
+
### Wavy Path Generator
|
|
275
|
+
|
|
276
|
+
Scale the path's viewBox width to match text width. The wave pattern `Q x1,y1 x2,y2` alternates between `y=0` and `y=24` for a natural wobble. Adjust the control points for tighter or looser waves:
|
|
277
|
+
|
|
278
|
+
- **Tight waves**: smaller x-increments (25px per half-wave)
|
|
279
|
+
- **Loose waves**: larger x-increments (50px per half-wave)
|
|
280
|
+
- **Amplitude**: change the y range (0-24 for standard, 0-16 for subtle)
|
|
281
|
+
|
|
282
|
+
## 5. Sketchout Mode
|
|
283
|
+
|
|
284
|
+
Cross-hatch lines over de-emphasized text. Multiple angled lines create a "crossed out" effect.
|
|
285
|
+
|
|
286
|
+
```html
|
|
287
|
+
<span class="mh-sketchout-wrap">
|
|
288
|
+
<span class="mh-sketchout-text">old price</span>
|
|
289
|
+
<span class="mh-sketchout-lines" id="sketchout-1">
|
|
290
|
+
<span class="mh-sketchout-line mh-sketchout-fwd"></span>
|
|
291
|
+
<span class="mh-sketchout-line mh-sketchout-bwd"></span>
|
|
292
|
+
</span>
|
|
293
|
+
</span>
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
```css
|
|
297
|
+
.mh-sketchout-wrap {
|
|
298
|
+
position: relative;
|
|
299
|
+
display: inline;
|
|
300
|
+
}
|
|
301
|
+
.mh-sketchout-text {
|
|
302
|
+
position: relative;
|
|
303
|
+
z-index: 0;
|
|
304
|
+
}
|
|
305
|
+
.mh-sketchout-lines {
|
|
306
|
+
position: absolute;
|
|
307
|
+
top: 0;
|
|
308
|
+
left: -4px;
|
|
309
|
+
right: -4px;
|
|
310
|
+
bottom: 0;
|
|
311
|
+
overflow: hidden;
|
|
312
|
+
z-index: 1;
|
|
313
|
+
}
|
|
314
|
+
.mh-sketchout-line {
|
|
315
|
+
position: absolute;
|
|
316
|
+
display: block;
|
|
317
|
+
top: 50%;
|
|
318
|
+
left: 0;
|
|
319
|
+
width: 100%;
|
|
320
|
+
height: 2px;
|
|
321
|
+
background: #e53935;
|
|
322
|
+
transform-origin: left center;
|
|
323
|
+
transform: scaleX(0);
|
|
324
|
+
}
|
|
325
|
+
.mh-sketchout-fwd {
|
|
326
|
+
transform: scaleX(0) rotate(-12deg);
|
|
327
|
+
}
|
|
328
|
+
.mh-sketchout-bwd {
|
|
329
|
+
transform: scaleX(0) rotate(12deg);
|
|
330
|
+
}
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
```js
|
|
334
|
+
// Forward slash draws first
|
|
335
|
+
tl.to(
|
|
336
|
+
"#sketchout-1 .mh-sketchout-fwd",
|
|
337
|
+
{
|
|
338
|
+
scaleX: 1,
|
|
339
|
+
duration: 0.3,
|
|
340
|
+
ease: "power2.out",
|
|
341
|
+
},
|
|
342
|
+
1.0,
|
|
343
|
+
);
|
|
344
|
+
|
|
345
|
+
// Backward slash follows
|
|
346
|
+
tl.to(
|
|
347
|
+
"#sketchout-1 .mh-sketchout-bwd",
|
|
348
|
+
{
|
|
349
|
+
scaleX: 1,
|
|
350
|
+
duration: 0.3,
|
|
351
|
+
ease: "power2.out",
|
|
352
|
+
},
|
|
353
|
+
1.15,
|
|
354
|
+
);
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
## Combining Modes in Captions
|
|
358
|
+
|
|
359
|
+
Use mode cycling for visual variety across caption groups:
|
|
360
|
+
|
|
361
|
+
```js
|
|
362
|
+
var MODES = ["highlight", "circle", "burst", "scribble"];
|
|
363
|
+
|
|
364
|
+
GROUPS.forEach(function (group, gi) {
|
|
365
|
+
var mode = MODES[gi % MODES.length];
|
|
366
|
+
// Apply the mode's CSS pattern to emphasis words in this group
|
|
367
|
+
group.emphasisWords.forEach(function (word) {
|
|
368
|
+
applyMode(word.el, mode, tl, word.start);
|
|
369
|
+
});
|
|
370
|
+
});
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
Cycle every 2-3 groups for high energy, every 3-4 for medium, every 4-5 for low.
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cursor-click-ripple
|
|
3
|
+
description: Animated mouse cursor moves to target, clicks with scale depression and expanding ripple rings.
|
|
4
|
+
metadata:
|
|
5
|
+
tags: cursor, click, ripple, interaction, mouse, button
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Cursor Click Ripple
|
|
9
|
+
|
|
10
|
+
An animated cursor moves to a target element, performs a click with visual depression, and emits expanding ripple rings from the click point.
|
|
11
|
+
|
|
12
|
+
## How It Works
|
|
13
|
+
|
|
14
|
+
Three sequential phases driven by a single GSAP timeline:
|
|
15
|
+
|
|
16
|
+
1. **Move**: eased cursor translation from entry point to the target element's center
|
|
17
|
+
2. **Click**: scale depression on both cursor and target (yoyo: shrink then return)
|
|
18
|
+
3. **Ripple**: expanding circles radiate outward from the click point with fade-out. 1–3 staggered rings amplify the click feedback
|
|
19
|
+
|
|
20
|
+
Use a GSAP timeline because the phase ordering (move → settle → click → ripples) is exactly what timelines express cleanly.
|
|
21
|
+
|
|
22
|
+
## HTML
|
|
23
|
+
|
|
24
|
+
```html
|
|
25
|
+
<div
|
|
26
|
+
class="scene"
|
|
27
|
+
id="cursor-click-scene"
|
|
28
|
+
data-composition-id="cursor-click-scene"
|
|
29
|
+
data-start="0"
|
|
30
|
+
data-duration="2"
|
|
31
|
+
data-track-index="0"
|
|
32
|
+
>
|
|
33
|
+
<button class="target-button">{ctaLabel}</button>
|
|
34
|
+
|
|
35
|
+
<div class="cursor">
|
|
36
|
+
<svg width="24" height="24" viewBox="0 0 24 24">
|
|
37
|
+
<path
|
|
38
|
+
d="M5 3L19 12L12 13L9 20L5 3Z"
|
|
39
|
+
fill="{cursorFill}"
|
|
40
|
+
stroke="{cursorStroke}"
|
|
41
|
+
stroke-width="1.5"
|
|
42
|
+
/>
|
|
43
|
+
</svg>
|
|
44
|
+
</div>
|
|
45
|
+
|
|
46
|
+
<!-- Ripple rings — centered on click target, hidden until trigger -->
|
|
47
|
+
<div class="ripple ripple-1"></div>
|
|
48
|
+
<div class="ripple ripple-2"></div>
|
|
49
|
+
<div class="ripple ripple-3"></div>
|
|
50
|
+
</div>
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## CSS
|
|
54
|
+
|
|
55
|
+
Position cursor at the entry point. Button sits at its final position. Ripples are at the click-target center with `scale: 0` and `opacity: 0` so they hold invisible until the timeline trigger:
|
|
56
|
+
|
|
57
|
+
```css
|
|
58
|
+
.scene {
|
|
59
|
+
position: relative;
|
|
60
|
+
width: 100%;
|
|
61
|
+
height: 100%;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.target-button {
|
|
65
|
+
position: absolute;
|
|
66
|
+
left: 50%;
|
|
67
|
+
top: 50%;
|
|
68
|
+
transform: translate(-50%, -50%);
|
|
69
|
+
/* ...button styling (background, color, font from project tokens) */
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.cursor {
|
|
73
|
+
position: absolute;
|
|
74
|
+
left: 10%;
|
|
75
|
+
top: 80%; /* entry corner */
|
|
76
|
+
pointer-events: none;
|
|
77
|
+
z-index: 999;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.ripple {
|
|
81
|
+
position: absolute;
|
|
82
|
+
left: 50%;
|
|
83
|
+
top: 50%; /* click target center */
|
|
84
|
+
width: 100px;
|
|
85
|
+
height: 100px;
|
|
86
|
+
border-radius: 50%;
|
|
87
|
+
border: 2px solid {rippleColor};
|
|
88
|
+
transform: translate(-50%, -50%) scale(0);
|
|
89
|
+
opacity: 0;
|
|
90
|
+
pointer-events: none;
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## GSAP Timeline
|
|
95
|
+
|
|
96
|
+
Build a paused timeline. Register it on `window.__timelines` with the same key as `data-composition-id` on the scene root. All tuning values are named constants — see How to Choose Values below.
|
|
97
|
+
|
|
98
|
+
```html
|
|
99
|
+
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
|
|
100
|
+
<script>
|
|
101
|
+
window.__timelines = window.__timelines || {};
|
|
102
|
+
const tl = gsap.timeline({ paused: true });
|
|
103
|
+
|
|
104
|
+
// MOVE_DUR, MOVE_EASE, CLICK_AT, PRESS_DUR, CURSOR_PRESS_SCALE, TARGET_PRESS_SCALE,
|
|
105
|
+
// RIPPLE_AT, RIPPLE_DUR, RIPPLE_SCALE, RIPPLE_STAGGER, RIPPLE_EASE
|
|
106
|
+
// — all named; values per How to Choose Values.
|
|
107
|
+
|
|
108
|
+
// Phase 1 — Move cursor to target center (eased, not linear)
|
|
109
|
+
tl.to(
|
|
110
|
+
".cursor",
|
|
111
|
+
{
|
|
112
|
+
x: TARGET_X,
|
|
113
|
+
y: TARGET_Y,
|
|
114
|
+
duration: MOVE_DUR,
|
|
115
|
+
ease: MOVE_EASE,
|
|
116
|
+
},
|
|
117
|
+
0,
|
|
118
|
+
);
|
|
119
|
+
|
|
120
|
+
// Phase 2 — Click: cursor + target depress together, then return
|
|
121
|
+
tl.to(
|
|
122
|
+
".cursor",
|
|
123
|
+
{
|
|
124
|
+
scale: CURSOR_PRESS_SCALE,
|
|
125
|
+
duration: PRESS_DUR,
|
|
126
|
+
ease: "power2.in",
|
|
127
|
+
yoyo: true,
|
|
128
|
+
repeat: 1,
|
|
129
|
+
},
|
|
130
|
+
CLICK_AT,
|
|
131
|
+
);
|
|
132
|
+
tl.to(
|
|
133
|
+
".target-button",
|
|
134
|
+
{
|
|
135
|
+
scale: TARGET_PRESS_SCALE,
|
|
136
|
+
duration: PRESS_DUR,
|
|
137
|
+
ease: "power2.in",
|
|
138
|
+
yoyo: true,
|
|
139
|
+
repeat: 1,
|
|
140
|
+
},
|
|
141
|
+
CLICK_AT,
|
|
142
|
+
);
|
|
143
|
+
|
|
144
|
+
// Phase 3 — Ripple burst, N rings staggered from the click point
|
|
145
|
+
tl.set([".ripple-1", ".ripple-2", ".ripple-3"], { opacity: 1 }, RIPPLE_AT);
|
|
146
|
+
tl.to(
|
|
147
|
+
[".ripple-1", ".ripple-2", ".ripple-3"],
|
|
148
|
+
{
|
|
149
|
+
scale: RIPPLE_SCALE,
|
|
150
|
+
opacity: 0,
|
|
151
|
+
duration: RIPPLE_DUR,
|
|
152
|
+
ease: RIPPLE_EASE,
|
|
153
|
+
stagger: RIPPLE_STAGGER,
|
|
154
|
+
immediateRender: false,
|
|
155
|
+
},
|
|
156
|
+
RIPPLE_AT,
|
|
157
|
+
);
|
|
158
|
+
|
|
159
|
+
window.__timelines["cursor-click-scene"] = tl;
|
|
160
|
+
</script>
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## How to Choose Values
|
|
164
|
+
|
|
165
|
+
- **MOVE_DUR** — cursor travel time from entry to target, in seconds
|
|
166
|
+
- Range: 0.4–1.0 s
|
|
167
|
+
- Effects: short feels darting; long feels deliberate / "considered click"
|
|
168
|
+
- Constraints: must end before `CLICK_AT` — otherwise the click fires while the cursor is still moving and reads as a misclick
|
|
169
|
+
- Reference: ../../examples/cta-orbit-collapse.html uses 0.5 s
|
|
170
|
+
|
|
171
|
+
- **MOVE_EASE** — easing family for the move tween
|
|
172
|
+
- Discrete choice. Options:
|
|
173
|
+
- `power2.inOut` — symmetric, calm; good for "the user thoughtfully moves the cursor"
|
|
174
|
+
- `back.out(<n>)` — overshoot landing; good when the click target is a button you want the cursor to "settle onto" with a tiny visible recoil. Pair with a low overshoot coefficient (~1.2–1.4) — higher reads as cartoonish
|
|
175
|
+
- `power3.out` — fast start, soft landing; good for a "decisive" move
|
|
176
|
+
- Reference: ../../examples/cta-orbit-collapse.html uses `back.out(1.3)`
|
|
177
|
+
|
|
178
|
+
- **CLICK_AT** — time the click fires, in seconds
|
|
179
|
+
- Range: must be ≥ `MOVE_DUR` (cursor has settled); typically `MOVE_DUR + 0.0–0.3 s` of "decision pause"
|
|
180
|
+
- Effects: zero pause reads as autopilot; >0.3 s of pause reads as hesitation
|
|
181
|
+
- Reference: ../../examples/cta-orbit-collapse.html clicks 0.2 s after the cursor settles
|
|
182
|
+
|
|
183
|
+
- **PRESS_DUR** — half-duration of the depression (the yoyo runs twice this)
|
|
184
|
+
- Range: 0.06–0.12 s
|
|
185
|
+
- Effects: short feels crisp; long feels mushy
|
|
186
|
+
- Constraints: total press = `2 * PRESS_DUR`; must finish before the next scene phase needs the cursor / target back at normal scale
|
|
187
|
+
- Reference: ../../examples/cta-orbit-collapse.html uses 0.08 s
|
|
188
|
+
|
|
189
|
+
- **CURSOR_PRESS_SCALE / TARGET_PRESS_SCALE** — how far each compresses during the click
|
|
190
|
+
- Range: cursor 0.80–0.90; target 0.92–0.97
|
|
191
|
+
- Effects: smaller numbers = stronger "this click counts" feel; values close to 1 read as a gentle tap
|
|
192
|
+
- Constraints: cursor compresses MORE than the target — the cursor is the actor, the target is the recipient
|
|
193
|
+
- Reference: ../../examples/cta-orbit-collapse.html uses cursor 0.85 / target 0.95
|
|
194
|
+
|
|
195
|
+
- **RIPPLE_AT** — when the rings start expanding, in seconds
|
|
196
|
+
- Range: `CLICK_AT + 0.0–0.08 s`
|
|
197
|
+
- Effects: simultaneous with the press feels causal; slight delay feels acoustic ("the click happens, then the wave radiates")
|
|
198
|
+
- Reference: ../../examples/cta-orbit-collapse.html starts the ripple at `CLICK_AT` exactly
|
|
199
|
+
|
|
200
|
+
- **RIPPLE_DUR** — how long each ring takes to fully expand and fade
|
|
201
|
+
- Range: 0.5–1.0 s
|
|
202
|
+
- Effects: short rings feel sharp; long rings feel like a soft sonar
|
|
203
|
+
- Constraints: must complete before any phase that depends on the ring being gone (e.g. a screen wipe)
|
|
204
|
+
- Reference: ../../examples/cta-orbit-collapse.html uses 0.7 s
|
|
205
|
+
|
|
206
|
+
- **RIPPLE_SCALE** — final scale of each ring before it fades
|
|
207
|
+
- Range: 3–6
|
|
208
|
+
- Effects: 3 keeps the ring near the click site; 6 lets it sweep the surrounding area
|
|
209
|
+
- Constraints: if the ring would exit the visible frame before opacity reaches 0, lower the scale or shorten the duration
|
|
210
|
+
- Reference: ../../examples/cta-orbit-collapse.html uses 5
|
|
211
|
+
|
|
212
|
+
- **RIPPLE_STAGGER** — delay between consecutive rings
|
|
213
|
+
- Range: 0.06–0.12 s (or 0 for a single ring; see Variations)
|
|
214
|
+
- Effects: below ~0.06 s reads as one thick ring; above ~0.12 s reads as separate events
|
|
215
|
+
- Reference: ../../examples/cta-orbit-collapse.html uses a single ring (no stagger)
|
|
216
|
+
|
|
217
|
+
- **RIPPLE_EASE** — easing family for the expansion
|
|
218
|
+
- Discrete choice. Options:
|
|
219
|
+
- `power2.out` — fast start, soft tail; the standard "ping" feel
|
|
220
|
+
- `power3.out` — even sharper attack, longer tail
|
|
221
|
+
- `expo.out` — almost-instant expansion with a long quiet fade; reads as a strong, distant pulse
|
|
222
|
+
- Reference: ../../examples/cta-orbit-collapse.html uses `power2.out`
|
|
223
|
+
|
|
224
|
+
- **TARGET_X / TARGET_Y** — pixel offset of the click target from the cursor's CSS-laid origin
|
|
225
|
+
- These are layout-derived, not creative knobs — they must match the visual centroid of the actual click target. A 4 px miss reads as missing the button
|
|
226
|
+
- Reference: ../../examples/cta-orbit-collapse.html targets the white button at `CENTER_X + 130, CENTER_Y + 15`
|
|
227
|
+
|
|
228
|
+
## Variations
|
|
229
|
+
|
|
230
|
+
- **Single ring** — keep one `.ripple` element, drop the stagger; reads as more elegant when the rest of the scene is busy
|
|
231
|
+
- **Keyframed attack-decay** — replace the simple expand-and-fade with a `keyframes` block that ramps opacity 0 → peak → 0 across the duration; gives a clearer "energy radiates and dissipates" envelope (used in ../../examples/cta-orbit-collapse.html)
|
|
232
|
+
- **Multi-ring expanding pulse** — 3 rings with 0.08 s stagger feels richer when the click is the climactic moment of the scene
|
|
233
|
+
|
|
234
|
+
## Key Principles
|
|
235
|
+
|
|
236
|
+
- **Move before click**: trigger the click only after the move tween has settled — clicking mid-motion reads as unintentional
|
|
237
|
+
- **Synchronized depression**: cursor + target depress at the same `position` time with the same duration (and both yoyo back)
|
|
238
|
+
- **Ripple from click point**: ripples expand from the exact click location (the button's visual center), not from any element's bounding-box origin
|
|
239
|
+
- **Subtle scale**: cursor compresses more than the target — see `CURSOR_PRESS_SCALE` / `TARGET_PRESS_SCALE`
|
|
240
|
+
- **High z-index cursor**: cursor renders above all content for the entire sequence
|
|
241
|
+
|
|
242
|
+
## Critical Constraints
|
|
243
|
+
|
|
244
|
+
- **Timeline must be paused**: `gsap.timeline({ paused: true })`. Never call `tl.play()` — HyperFrames seeks the timeline frame-by-frame deterministically
|
|
245
|
+
- **Registry key = `data-composition-id`**: `window.__timelines["<id>"]` must match the `data-composition-id` on the scene root exactly
|
|
246
|
+
- **`immediateRender: false` on the ripple expand**: holds the initial state (`scale: 0`, `opacity: 0`) until the click moment, otherwise the tween pre-renders and the rings appear at the wrong size at t=0
|
|
247
|
+
- **Finite duration**: verify `tl.duration()` matches the scene's `data-duration`
|
|
248
|
+
- **`pointer-events: none` on cursor + ripples**: they're purely visual; never block underlying interactivity (matters for hover-able exports)
|
|
249
|
+
- **No CSS transitions / animations**: all motion lives in the GSAP timeline so seek stays deterministic
|
|
250
|
+
|
|
251
|
+
## Combinations
|
|
252
|
+
|
|
253
|
+
- [orbit-3d-entry.md](orbit-3d-entry.md) — when the click is the pivot that collapses orbiting elements toward the cursor's target
|
|
254
|
+
- [center-outward-expansion.md](center-outward-expansion.md) — the click can be the trigger for an outward burst from the click point
|
|
255
|
+
- [press-release-spring.md](press-release-spring.md) for stronger physical feel on the target button
|
|
256
|
+
- [scale-swap-transition.md](scale-swap-transition.md) for the button's state change after click (button morphs into success state, next view, etc.)
|
|
257
|
+
|
|
258
|
+
## Pairs with HF skills
|
|
259
|
+
|
|
260
|
+
- `/hyperframes-animation` — timeline + tween API reference (eases, stagger, `immediateRender`, etc.)
|
|
261
|
+
- `/hyperframes-core` — composition wiring (`data-*` attributes, scene structure, registration contract)
|
|
262
|
+
- `/hyperframes-cli` — `hyperframes lint` to verify the registry key + duration match
|