Family Plugins
The official plugins that share one design system: five themes, the same style settings, and sizes that stay readable from a phone to a TV.
Overview
The family plugins are official MP4E plugins designed together. Each one offers the same five themes and the same style settings, so picking the same theme on every family plugin in a video makes them look like one set. Every setting can still be changed per plugin.
| Plugin | Id | What it does |
|---|---|---|
| Chapters | mp4e:cuts | Lets viewers pick a shorter cut of the video and jump between its chapters. Listed in the marketplace as Cuts. |
| Steps | mp4e:steps | A step checklist that follows the video. |
| Info card | mp4e:info-card | Timed cards that explain what is on screen: a fact, a tip, a definition or a warning. |
| Moments | mp4e:moments | Pop-ups at the key moments, and a list in the player menu to jump to any of them. |
| Quiz | mp4e:quiz | Checkpoint questions that pause the video, check the answer and end with a score. |
| Product card | mp4e:product-card | Timed product cards with a picture, the price and a button to the product's page or into the cart, tappable while the video plays. |
| Cart | mp4e:cart | An in-video shopping cart: a badge with the count, a side panel with the items and the total, and checkout on your site or through a payment plugin. |
| Call to action | mp4e:cta | A timed button or banner (visit the shop, get the recipe) that opens its link, tappable while the video plays. |
| Search | mp4e:search | Lets viewers search what is said and shown in the video and jump to it, from the player's settings menu. |
Each family plugin is self-contained: installing one adds everything it needs to the video, and it reads nothing from the others. Each is one overlay covering the whole frame that places its own panels, so add it at full size and choose its layout in its settings rather than by resizing the overlay.
sizeMode: 'fixed', which is what the Studio does when you add one. A content-sized overlay ('auto') has no height of its own, so its panels collapse to their headers.Product card and Info card can also be the card a tracked object opens (an object group's display). Opened that way they are not an overlay: the card is the whole display, with the family's themes and style settings.
Themes
| Theme | Value | Look | Suits |
|---|---|---|---|
| Clean | clean | Light glass panels, soft shadows, a blue accent | Lessons, corporate, tours |
| Bold | bold | Black slabs, heavy condensed capitals, a signal-yellow accent, hard shadows | Product, marketing, calls to action |
| Cinematic | cinematic | Smoked glass, thin serif titles, a champagne accent, slow reveals | Showcases, films, brand videos |
| Playful | playful | Cream paper, rounded type, outlined sticker shadows, a violet accent, a bounce | Kids, social, casual cooking |
| Studio | studio | MP4E's dark glass and electric cyan | Demos; the default |
Every theme's text meets WCAG AA contrast on its panels over any video, bright or dark. Themes use fonts that ship with Apple, Windows and Android devices, so nothing is downloaded.
Common settings
Every family plugin has these settings, in the Style group of its overlay settings in the Studio. Colours are #rgb, #rrggbb, #rrggbbaa, rgb() or rgba(); anything else is ignored and the theme's own colour stays. Like any plugin setting, a value can be a {{variable}}.
| Prop | Type | Default | Description |
|---|---|---|---|
theme | 'clean' | 'bold' | 'cinematic' | 'playful' | 'studio' | 'studio' | The look. Pick the same theme on every family plugin in a video and they read as one set. Any other value shows as Studio. |
accent | colour | '' | Buttons, highlights and the focus ring. Empty keeps the theme's own. The text on it, its soft tint and the focus ring are worked out from it so they stay readable. |
size | 'normal' | 'large' | 'leanBack' | 'normal' | How large everything is, on top of scaling with the video: ×1, ×1.25 or ×1.5. Lean-back is for a TV across the room. |
surface | colour | '' | The panels' background. Use rgba() for see-through. When the theme's text would not read on it, a readable text colour is used instead. |
textColor | colour | '' | The text colour. Empty keeps the theme's own (or the readable one picked for your background). |
font | string | '' | A CSS font stack, e.g. "Georgia, serif". Plugins cannot download fonts, so name fonts the viewer's device already has. |
radius | number | - | Corner rounding of panels and cards, in pixels of a 1920-wide frame. Empty keeps the theme's own. |
motion | 'full' | 'reduced' | 'none' | 'full' | How things appear and move. Reduced keeps fades only; None turns movement off. A viewer who asked for reduced motion gets at most Reduced. |
// Chapters overlay config
{ "theme": "cinematic", "accent": "#d4a24c", "size": "large" }
// Steps overlay config in the same video
{ "theme": "cinematic", "accent": "#d4a24c", "size": "large", "position": "right" }Sizes
Family plugins are laid out on a 1920-pixel-wide frame and scale with the displayed video, so a panel takes the same share of the picture on every screen. Sizes are set like TV graphics: body text is about 30 pixels of that frame and buttons are at least 76 pixels tall. The size setting multiplies everything on top: ×1, ×1.25 or ×1.5.
Minimum readable size
On a small player the whole frame shrinks with the video, so a family plugin never renders below half its full-HD size. The size it uses is:
max(size, 0.5 ÷ (displayed long side of the video ÷ 1920))The floor only matters on players smaller than 960 pixels. Body text, roughly, measured on screen:
| Player width | normal | large | leanBack |
|---|---|---|---|
| 375 px (phone, inline) | 15 px | 15 px | 15 px |
| 768 px (tablet) | 15 px | 15 px | 18 px |
| 1280 px (laptop) | 20 px | 25 px | 30 px |
| 1920 px (full HD, TV) | 30 px | 37.5 px | 45 px |
Spacing, buttons, corners and shadows grow with the text, so proportions hold. Panels never grow past the frame: when the content is longer they scroll inside.
On phones
- On a player under 640 pixels wide, Chapters' start and end cards and its chapters panel become sheets across the bottom of the frame, and the chapters list scrolls around the chapter being watched.
- On a phone-sized player, Steps' side panel leaves out the times and detail lines, and its bottom row shows each step on one line.
- On a phone-sized player, Info card's card and Moments' pop-up span the width of the frame, and the Moments list becomes a sheet above the controls.
- On a phone-sized player, Quiz's card spans the frame and its answers go two by two.
- On a phone-sized player, Product card's card becomes one row across the frame (at the top for the side positions, at the bottom for the corners), and Call to action's line under the text keeps to one line.
- Panels and cards keep at least 76 screen pixels clear above the bottom of the video, where the player's controls bar sits, at every player size.
Keyboard and TV remotes
- The arrow keys (or a remote's or gamepad's d-pad) move between the items of an open panel or card.
- Enter or OK picks the focused item.
- Escape, Backspace, a remote's Back key or a gamepad's B button closes the panel or gives the frame back to the video.
- A focus ring in the accent colour shows which item is focused whenever focus moves by key.
A plugin follows keys pressed on the player only while one of its panels is open, so the player's own shortcuts keep working the rest of the time.
The viewer's preferences
Family plugins follow the viewer preferences set in the player and on the device:
- Reduced motion (in the player, or the device's reduce-motion setting) caps
motionat Reduced: fades only, no movement. - High contrast makes panels opaque, gives muted text the full text colour and draws real borders.
Chapters (Cuts)
Cuts (mp4e:cuts) is the family's Chapters plugin. It has every common setting above, and its own settings, events and actions are unchanged. Its theme also accepts five more values, each shown as one of the family themes:
| theme | Shows as |
|---|---|
minimal-dark | Studio |
minimal-light | Clean |
glass | Cinematic |
broadcast | Bold |
brand | Studio, with the Brand settings below |
Its own look settings:
| Prop | Type | Default | Description |
|---|---|---|---|
position | 'center' | 'bottom' | 'top' | 'center' | Where the start and end cards sit. The skip note is always a bottom-right toast and the chapters panel always sits at the side. |
customCss | string | '' | Extra CSS for the plugin frame, applied after the theme. Elements carry cuts-* classes; the theme's colours are the --fam-* variables (--fam-accent, --fam-surface, --fam-text, --fam-muted, --fam-radius, --fam-font). |
accentColor | colour | '' | Brand accent colour. Read only when theme is 'brand', where it fills accent when that is empty. |
fontFamily | string | '' | Brand font. Read only when theme is 'brand', where it fills font when that is empty. |
animation | 'fade' | 'none' | 'fade' | 'none' turns all motion off, whatever motion says. 'fade' follows motion. |
When a common setting and one of these say different things, the common setting wins: accent over accentColor, font over fontFamily. The one exception is animation: 'none', an off switch that always wins.
/* Chapters: an accent edge on the start card */
.cuts-card--entry {
border-left: calc(8px * var(--fam-k)) solid var(--fam-accent);
}var(--fam-k), the effective size, so they follow the size setting and the minimum readable size like the rest of the plugin.An overlay saved with one of the older theme values above keeps the look it had before the family: textColor and surface apply only once a family theme is chosen.
Chapters only
Cuts can be just a chapter list, with no shorter cuts to choose. Turn off the Full choice and leave the cut list empty, and point chapters.fullGroupId at the scene group whose scenes are the chapters. The settings menu then shows a Chapters entry and no Length submenu, and the panel lists that group's scenes, with their summaries, and follows the playhead.
{
"offerFull": false,
"cutGroupIds": [],
"chapters.enabled": true,
"chapters.fullGroupId": "scenegroup_chapters",
"entryCard.enabled": false,
"endCard.enabled": false,
"menu.enabled": true,
"theme": "studio"
}The panel always lists the active cut's scenes while a cut is playing, and the chapters.fullGroupId group otherwise, whatever offerFull says.
Search
Search (mp4e:search) has every common setting above. Its theme also accepts the same five older values as Chapters, shown the same way, and its size accepts the older compact and regular, both shown as normal. Its older accentColor and fontFamily work as they do on Chapters. On a player under 640 pixels wide its panel becomes a sheet across the bottom of the frame.