Skip to main content
Glama
schema.py3.35 kB
"""DeviceFrame component schema and metadata.""" from typing import Literal from pydantic import BaseModel, Field from chuk_motion.components.base import ComponentMetadata class DeviceFrameProps(BaseModel): """Props for DeviceFrame component.""" startFrame: int = Field(..., description="Frame when component becomes visible") durationInFrames: int = Field(..., description="Duration in frames") device: Literal["phone", "tablet", "laptop"] = Field( default="phone", description="Type of device frame to display" ) content: str = Field( default="", description="Content to display inside the device (can be image path or component)", ) orientation: Literal["portrait", "landscape"] = Field( default="portrait", description="Device orientation" ) scale: float = Field( default=1.0, description="Auto-scale factor for the device (0.1 to 2.0)", ge=0.1, le=2.0 ) glare: bool = Field(default=True, description="Enable realistic screen glare effect") shadow: bool = Field(default=True, description="Enable device shadow") position: Literal[ "center", "top-left", "top-center", "top-right", "center-left", "center-right", "bottom-left", "bottom-center", "bottom-right", ] = Field(default="center", description="Position of device on screen") class Config: extra = "forbid" METADATA = ComponentMetadata( name="DeviceFrame", description="Realistic device frame (phone, tablet, laptop) with auto-scaling, glare effects, and content display", category="demo_realism", ) # MCP schema (backward compatible) MCP_SCHEMA = { "startFrame": { "type": "number", "description": "Frame when component becomes visible", "required": True, }, "durationInFrames": { "type": "number", "description": "Duration in frames", "required": True, }, "device": { "type": "string", "description": "Type of device frame: phone, tablet, or laptop", "default": "phone", "enum": ["phone", "tablet", "laptop"], }, "content": { "type": "string", "description": "Content to display inside the device (image path or component)", "default": "", }, "orientation": { "type": "string", "description": "Device orientation: portrait or landscape", "default": "portrait", "enum": ["portrait", "landscape"], }, "scale": { "type": "number", "description": "Auto-scale factor for the device (0.1 to 2.0)", "default": 1.0, }, "glare": { "type": "boolean", "description": "Enable realistic screen glare effect", "default": True, }, "shadow": { "type": "boolean", "description": "Enable device shadow", "default": True, }, "position": { "type": "string", "description": "Position of device on screen", "default": "center", "enum": [ "center", "top-left", "top-center", "top-right", "center-left", "center-right", "bottom-left", "bottom-center", "bottom-right", ], }, }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/chrishayuk/chuk-mcp-remotion'

If you have feedback or need assistance with the MCP directory API, please join our Discord server