Brand Message
vanillasky/brandMessageFreeBlock
Single iMessage-style outgoing bubble over media. Use only when a direct 1:1 brand-to-viewer note is the point: thanks, invitation, personal promise, concise launch note. Avoid as generic filler, explanation, or proof.
See it running
Open the demo on vanillasky
vanillasky.ai/docs/components/brandMessageInstall it
npx shadcn@latest add https://vanillasky.ai/r/brandMessage.jsonSource
1/**2 * brand-message — single iMessage-style sent bubble over media.3 *4 * One outgoing chat message, right-aligned. Mirrors the chatMessenger5 * animation exactly: typing dots pop in (right side, iMessage blue),6 * bounce, fade out, then the message bubble pops in. No avatar, no7 * sender header, no tail — the same minimal iMessage rendering as8 * chatMessenger. The differentiator from chatMessenger is that this9 * runs ONE message over a media background, not a multi-message10 * conversation.11 *12 * Use cases: "We built this for you", "Thanks for being here",13 * "Try it free this week" — brand voice messages where you want a14 * direct, personal frame, like a single iMessage from the brand15 * dropping into the viewer's frame.16 */1718import * as React from "react";19import type { VariableField } from "../video-config";20import type { SceneTemplateProps } from "./types";21import {22 SceneBackground,23 mediaBackgroundSchemaFields,24 mediaBackgroundDefaults,25} from "./scene-background";26import { stripPipe } from "../typography";27import { BrandMessageBubble } from "../primitives/typography/BrandMessageBubble";2829export const brandMessageSchema: Record<string, VariableField> = {30 brandName: {31 type: "string",32 label: "Brand name",33 default: "Your brand",34 required: true,35 description:36 "Small italic label at the top-left of the bubble identifying who the message is from (like 'you' in iMessage screenshots). 1-3 words reads best.",37 },38 message: {39 type: "string",40 label: "Message",41 default: "We built this for you.",42 required: true,43 description:44 "The brand-voiced message rendered as a single iMessage-style outgoing bubble (right side, cream) over the media background. 4-12 words reads best — short messages produce a tight bubble; longer ones wrap inside the 75% width cap. Examples: 'We built this for you.', 'Thanks for being here.', 'See what's new this week.'",45 },46 ...mediaBackgroundSchemaFields,47};4849export const brandMessageDefaults: Record<string, unknown> = {50 brandName: "Your brand",51 message: "We built this for you.",52 ...mediaBackgroundDefaults,53};5455export const BrandMessageTemplate: React.FC<SceneTemplateProps> = ({56 variables,57 style,58 progress,59 beatIntensity,60 width,61 height,62 sceneDuration,63 isPlaying = true,64 safeZone,65 backgroundEffect,66}) => {67 /* Match chatMessenger's scaling so the bubble feels identical: the68 * 534-wide reference normalizes typography. Use the SHORT edge so69// … truncated
What it pulls in
npm packages
Other registry items
Files it writes
More from vanillasky
All 33 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Bar ChartbarChart | vanillasky | Blocks | Free | 1 dep · 8 files | |
| Before AfterbeforeAfter | vanillasky | Blocks | Free | 1 dep · 7 files | |
| Big NumberbigNumber | vanillasky | Blocks | Free | 1 dep · 8 files | |
| Card ListcardList | vanillasky | Blocks | Free | 1 dep · 8 files | |
| Chat MessengerchatMessenger | vanillasky | Blocks | Free | 1 dep · 6 files | |
| Chat WhatsappchatWhatsapp | vanillasky | Blocks | Free | 1 dep · 6 files | |
| Code EditorcodeEditor | vanillasky | Blocks | Free | 1 dep · 7 files | |
| Confetticonfetti | vanillasky | Blocks | Free | 1 dep · 6 files |
