Skip to main content
Glama
LowerThird.md6.47 kB
# LowerThird ## Overview LowerThird is a name/title overlay component that appears at the bottom (or top) of the screen. Commonly used for speaker identification, location tags, or persistent information display. **Category:** Overlay **Template:** `overlays/LowerThird.tsx.j2` **Test:** `tests/templates/overlays/test_lowerthird.py` ## Use Cases - Speaker/guest identification - Location/venue labels - Social media handles - Job titles and credentials - Podcast guest introductions - Interview subjects - Product/feature labels ## Props ### Required Props | Prop | Type | Description | |------|------|-------------| | `name` | `string` | Primary text (name, handle, or label) | | `startFrame` | `number` | Frame when component becomes visible | | `durationInFrames` | `number` | How long component is visible | ### Optional Props | Prop | Type | Default | Description | |------|------|---------|-------------| | `title` | `string?` | `undefined` | Secondary text (job title, location, etc.) | | `variant` | `string` | `'glass'` | Visual style variant | | `position` | `string` | `'bottom_left'` | Screen position | ## Variants | Variant | Description | Best For | |---------|-------------|----------| | `minimal` | Simple text with subtle background | Clean, professional look | | `standard` | Balanced design with borders | General purpose | | `glass` | Glassmorphism with backdrop blur | Modern, premium aesthetic | | `bold` | High contrast with strong borders | High visibility, energetic content | | `animated` | Pulsing border effect | Extra attention, live broadcasts | ## Positions | Position | Location | Use Case | |----------|----------|----------| | `bottom_left` | Bottom left corner | Standard speaker ID | | `bottom_center` | Bottom center | Centered captions/info | | `bottom_right` | Bottom right corner | Alternative placement | | `top_left` | Top left corner | Venue/location labels | | `top_center` | Top center | Breaking news style | | `top_right` | Top right corner | Social media handles | ## Usage Example ```typescript import { LowerThird } from './overlays/LowerThird'; // Basic speaker identification <LowerThird name="Jane Smith" title="CEO, Acme Corp" position="bottom_left" startFrame={120} durationInFrames={180} /> // Social media handle <LowerThird name="@username" variant="bold" position="bottom_right" startFrame={0} durationInFrames={300} /> // Location tag <LowerThird name="San Francisco, CA" variant="glass" position="top_left" startFrame={60} durationInFrames={240} /> ``` ## Scene Configuration ```python { "type": "LowerThird", "config": { "name": "Jane Smith", "title": "Product Designer", "variant": "glass", "position": "bottom_left" }, "start_frame": 120, "duration_in_frames": 180 } ``` ## Design Tokens Used ### Colors - `colors.background.dark` - Background fill - `colors.background.glass` - Glass variant background - `colors.primary[0]` - Primary accent color - `colors.text.primary` - Name text color - `colors.text.muted` - Title text color ### Typography - `typography.body_font.fonts` - Font family - Name: 24-28px, weight 600-700 - Title: 16-20px, weight 500 ### Motion - `motion.default_spring.config.damping` - Slide animation damping - `motion.default_spring.config.stiffness` - Slide animation stiffness ## Animation Behavior ### Entrance (Slide In) - Slides in from the edge of the screen - Duration: ~25 frames - Spring-based for natural deceleration - Includes fade in ### Exit (Fade Out) - Begins 20 frames before duration ends - Smooth opacity transition - No position animation on exit ### Position Mapping ```typescript { bottom_left: { bottom: 80, left: 80 }, bottom_center: { bottom: 80, left: '50%', transform: 'translateX(-50%)' }, bottom_right: { bottom: 80, right: 80 }, top_left: { top: 80, left: 80 }, top_center: { top: 80, left: '50%', transform: 'translateX(-50%)' }, top_right: { top: 80, right: 80 } } ``` ## Styling Details ### Layout - Absolute positioning - Flexbox column for name/title stack - Auto width based on content - Fixed distance from screen edges (80px default) ### Spacing - Padding: 16-24px horizontal, 12-16px vertical - Gap between name and title: 4px - Border radius: 8-12px ### Visual Effects - Box shadow for depth - Backdrop filter blur for glass variant - Border highlights for bold/animated variants - Subtle pulsing animation for animated variant ## Best Practices ### DO ✅ - Use bottom_left for standard speaker IDs - Keep name concise (< 25 characters) - Use title for context (job, location, handle) - Match variant to video aesthetic - Allow sufficient duration (120+ frames for readability) - Use glass variant for video overlays ### DON'T ❌ - Don't use center positions excessively (obscures content) - Don't make text too long (breaks layout) - Don't use animated variant for every lower third - Don't skip the title when context is important - Don't make duration too short (< 90 frames hard to read) ## Accessibility - High contrast text - Sufficient size for readability (24px+ name) - Clear background separation - Adequate duration for reading (3+ seconds) ## Performance - Single DOM element - CSS-only animations (no JS recalc) - Efficient spring calculations - No state or effects ## Theme Compatibility Works with all themes. Glass variant particularly effective with: - tech (blue glass) - lifestyle (pink/purple glass) - gaming (multi-color glass) ## Related Components - **TitleScene** - For full-screen titles - **Container** - For wrapping with persistent lower third - **DialogueFrameLayout** - For conversation labels ## Common Patterns ### Interview Subject ```typescript <LowerThird name="Dr. Sarah Johnson" title="Climate Scientist, MIT" variant="glass" position="bottom_left" startFrame={300} durationInFrames={180} /> ``` ### Social Media CTA ```typescript <LowerThird name="@mychannel" title="Subscribe for more!" variant="bold" position="bottom_center" startFrame={7000} durationInFrames={240} /> ``` ### Location Tag ```typescript <LowerThird name="Brooklyn, New York" variant="minimal" position="top_left" startFrame={0} durationInFrames={600} /> ``` ## Testing See `tests/templates/overlays/test_lowerthird.py` for coverage: - 18 tests covering all positions and variants - Slide animation validation - Design token injection - Theme compatibility

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