Fade Through
remocn/fade-throughFreeComponent
A Material-style content transition: old fades out, new fades in with a soft delay.
Install it
npx shadcn@latest add https://www.remocn.dev/r/fade-through.jsonSource
1"use client";23import { Easing, interpolate, useCurrentFrame } from "remotion";45export interface FadeThroughProps {6 fromText: string;7 toText: string;8 fontSize?: number;9 color?: string;10 fontWeight?: number;11 speed?: number;12 className?: string;13}1415export function FadeThrough({16 fromText,17 toText,18 fontSize = 72,19 color = "#171717",20 fontWeight = 600,21 speed = 1,22 className,23}: FadeThroughProps) {24 const frame = useCurrentFrame() * speed;2526 const exitDur = 8;27 const enterDur = 13;28 const overlapF = 1;29 const microDelayF = 2;3031 const exitTotal = exitDur;32 const newStart = Math.max(0, exitTotal - overlapF + microDelayF);3334 const exitEasing = Easing.bezier(0.4, 0, 1, 1);35 const enterEasing = Easing.bezier(0.2, 0, 0, 1);3637 const fromOpacity = interpolate(frame, [0, exitDur], [1, 0], {38 extrapolateLeft: "clamp",39 extrapolateRight: "clamp",40 easing: exitEasing,41 });42 const fromY = interpolate(frame, [0, exitDur], [0, -4], {43 extrapolateLeft: "clamp",44 extrapolateRight: "clamp",45 easing: exitEasing,46 });4748 const local = frame - newStart;49 const toOpacity = interpolate(local, [0, enterDur], [0, 1], {50 extrapolateLeft: "clamp",51 extrapolateRight: "clamp",52 easing: enterEasing,53 });54 const toY = interpolate(local, [0, enterDur], [6, 0], {55 extrapolateLeft: "clamp",56 extrapolateRight: "clamp",57 easing: enterEasing,58 });59 const toScale = interpolate(local, [0, enterDur], [0.99, 1], {60 extrapolateLeft: "clamp",61 extrapolateRight: "clamp",62 easing: enterEasing,63 });64 const blurVal = interpolate(local, [0, enterDur], [2, 0], {65 extrapolateLeft: "clamp",66 extrapolateRight: "clamp",67 easing: enterEasing,68 });6970 const fontStack =71 "var(--font-geist-sans), -apple-system, BlinkMacSystemFont, sans-serif";7273 return (74 <div75 className={className}76 style={{77 position: "absolute",78 inset: 0,79 background: "transparent",80 }}81 >82 <div83 style={{84 position: "absolute",85 inset: 0,86 display: "flex",87 alignItems: "center",88 justifyContent: "center",89 }}90 >91 <span92 style={{93 fontSize,94 fontWeight,95 color,96 letterSpacing: "-0.03em",97 fontFamily: fontStack,98 display: "inline-block",99 transformOrigin: "50% 50%",100 opacity: fromOpacity,101 transform: `translateY(${fromY}px)`,102// … truncated
What it pulls in
npm packages
Files it writes
More from remocn
All 277 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| UI Accordionaccordion | remocn | Components | Free | 1 dep · 2 files | |
| UI AI Prompt Flowai-prompt-flow | remocn | Components | Free | 1 dep | |
| UI Alert Dialogalert-dialog | remocn | Components | Free | 1 dep · 2 files | |
| Animated Bar Chartanimated-bar-chart | remocn | Components | Free | 1 dep | |
| Animated Line Chartanimated-line-chart | remocn | Components | Free | 1 dep | |
| ASCII Dissolveascii-dissolve | remocn | Components | Free | 2 deps | |
| ASCII Renderascii-render | remocn | Components | Free | 1 dep | |
| Backdropbackdrop | remocn | Components | Free | 1 dep |
