comment-callout
remotionui/comment-calloutFreeBlock
Viewer comment answered on screen: it lands from the feed, the ask is marked up, the creator hearts it, and the reply is typed and sent
Live preview
live · rendered by the registry
Rendered by remotionui on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://remotionui.com/r/comment-callout.jsonSource
1import { loadFont } from "@remotion/google-fonts/Inter";2import { interpolate, spring, useCurrentFrame, useVideoConfig } from "remotion";3import { stageScale } from "@/remotion/lib/ai-composer-utils";4import { CODE_THEMES } from "@/remotion/lib/code-syntax";5import { EASING } from "@/remotion/lib/motion-tokens";6import { markEmphasis, markerEdges } from "@/remotion/lib/text-emphasis";78const { fontFamily } = loadFont("normal", {9 weights: ["400", "500", "600", "700"],10 subsets: ["latin"],11});1213/** Reference stage the card is laid out against, then uniformly scaled. */14const REF_WIDTH = 1280;15const REF_HEIGHT = 720;1617const CARD_WIDTH = 840;18const AVATAR = 68;19const BODY_SIZE = 40;20const BODY_LINE = 1.2;2122/** Characters per second the reply is typed at. */23const REPLY_CPS = 34;2425export type CommentCalloutProps = {26 /** The viewer comment being answered. */27 body?: string;28 /** Display name of the commenter. */29 author?: string;30 /** Social handle, also used on the reply line. */31 handle?: string;32 /** Avatar initials. Falls back to the first two letters of `author`. */33 initials?: string;34 /** Relative time shown next to the handle, e.g. "2h". */35 timestamp?: string;36 /**37 * Substring of `body` to mark up as the creator emphasises the ask.38 * Matched case-insensitively; omit to skip the highlight beat.39 */40 highlight?: string;41 /** The answer typed back. Omit to end the scene on the comment itself. */42 reply?: string;43 /** Label above the composer. */44 replyLabel?: string;45 /** Like count before the creator hearts the comment. */46 likes?: number;47 accentColor?: string;48 /** Overrides the page background behind the card. */49 backgroundColor?: string;50 theme?: "dark" | "light";51 /** Animation speed multiplier. */52 speed?: number;53};5455/** Drawn, not typed — emoji render inconsistently across platforms. */56const Heart: React.FC<{ size: number; color: string; fill: number }> = ({57 size,58 color,59 fill,60}) => (61 <svg width={size} height={size} viewBox="0 0 24 24" fill="none">62 <path63 d="M12 20.2s-7.4-4.6-7.4-9.6a4.2 4.2 0 0 1 7.4-2.7 4.2 4.2 0 0 1 7.4 2.7c0 5-7.4 9.6-7.4 9.6Z"64 stroke={color}65 strokeWidth={1.8}66 strokeLinejoin="round"67 fill={color}68 fillOpacity={fill}69 />70 </svg>71);7273const Reply: React.FC<{ size: number; color: string }> = ({ size, color }) => (74 <svg width={size} height={size} viewBox="0 0 24 24" fill="none">75 <path76// … truncated
More from remotionui
All 127 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| ai-composer-showcaseai-composer-showcase | remotionui | Blocks | Free | no deps | |
| ai-generation-canvasai-generation-canvas | remotionui | Blocks | Free | no deps | |
| animated-bar-chartanimated-bar-chart | remotionui | Blocks | Free | no deps | |
| audiogram-sceneaudiogram-scene | remotionui | Blocks | Free | no deps | |
| auto-fit-titleauto-fit-title | remotionui | Blocks | Free | no deps | |
| b-roll-stackb-roll-stack | remotionui | Blocks | Free | no deps | |
| bento-panbento-pan | remotionui | Blocks | Free | no deps | |
| browser-flowbrowser-flow | remotionui | Blocks | Free | no deps |
