{ "$schema": "https://ui.shadcn.com/schema/registry.json", "name": "vanillasky", "homepage": "https://vanillasky.ai", "items": [ { "name": "media", "type": "registry:block", "title": "Media", "description": "Full-bleed photo, video, or gradient with open text. Use for hooks, atmospheric body beats, uploaded scenic media, or a concrete product-context sentence over footage.", "dependencies": [ "react" ], "registryDependencies": [ "@vanillasky/backgrounds", "@vanillasky/theme", "@vanillasky/typography", "@vanillasky/video-config" ], "files": [ { "path": "src/lib/scene-templates/bg-media.tsx", "type": "registry:component", "target": "vanillasky/scene-templates/bg-media.tsx" }, { "path": "src/lib/scene-templates/confetti-layer.tsx", "type": "registry:component", "target": "vanillasky/scene-templates/confetti-layer.tsx" }, { "path": "src/lib/scene-templates/scene-background.tsx", "type": "registry:component", "target": "vanillasky/scene-templates/scene-background.tsx" }, { "path": "src/lib/scene-templates/template-text.tsx", "type": "registry:component", "target": "vanillasky/scene-templates/template-text.tsx" }, { "path": "src/lib/emoji/index.tsx", "type": "registry:component", "target": "vanillasky/emoji/index.tsx" }, { "path": "src/lib/emoji/emoji-text.tsx", "type": "registry:component", "target": "vanillasky/emoji/emoji-text.tsx" }, { "path": "src/lib/scene-templates/types.ts", "type": "registry:lib", "target": "vanillasky/scene-templates/types.ts" } ], "meta": { "vanillasky": { "layer": "template", "category": "media", "tier": "free", "register": "motion-led", "jobs": [ "atmosphere", "setup" ], "useWhen": "Full-bleed photo, video, or gradient with open text. Use for hooks, atmospheric body beats, uploaded scenic media, or a concrete product-context sentence over footage.", "textCanvas": "open", "minDuration": 1, "preferredDuration": 2, "allowsStockMedia": true, "variableSchema": { "texts": { "type": "string", "label": "Text", "default": "Make an impact.", "required": true, "description": "Title text shown on the scene" }, "mediaUrl": { "type": "media", "label": "Background media", "description": "Optional photo or video URL behind this scene. When set, replaces the brand gradient." }, "mediaKeyword": { "type": "string", "label": "Background search keyword", "default": "", "description": "2-4 word English term for Pexels stock-footage search (auto-fills mediaUrl)." }, "mediaType": { "type": "enum", "label": "Background media type", "default": "auto", "description": "auto detects photo/video from URL. 'gradient' is a deliberate mode — atmospheric brand-color scene with no stock footage.", "options": [ "auto", "photo", "video", "gradient" ] }, "mediaPoster": { "type": "string", "label": "Background poster image", "default": "", "description": "Still image URL shown while a video backdrop is decoding its first frame. Auto-filled from Pexels' thumbnail when fillPexelsUrls sets a video mediaUrl. Hides the gradient flash that would otherwise appear in the ~50–400ms gap between a