Embed
Generated from front/ui/catalogue/examples/Embed.json
learning · static (no JavaScript) · no children. All components: component playground.
Description for the model
Section titled “Description for the model”External media by URL (YouTube, Vimeo); other URLs become a link card.
Live example
Section titled “Live example”Rendered from the example props below with the real component. Theme: coffee · oncall · nightsky · gravity · poland · ulam · platform · open on its own
Example
Section titled “Example”{ "component": "Embed", "props": { "url": "https://example.org/embed/grind-size", "title": "Grind size visualiser" }}| Prop | Type | Required | Notes |
|---|---|---|---|
url |
string (href) | yes | Media URL. max length 2048 |
title |
string | yes | Title. max length 160 |
id |
string | Anchor id for in-page links (letters, digits, dashes). max length 40 |
Text fallback
Section titled “Text fallback”What a text-only client, an unknown renderer or a plain-text channel shows for the example above.
Grind size visualiser: https://example.org/embed/grind-sizeInvalid props
Section titled “Invalid props”A node whose props fail the schema never breaks the page: the renderer shows the plain-text fallback instead (and logs the issues in development).
{ "url": "javascript:alert(1)", "title": "Unsafe"}Issues:
/urlunsafe or empty link
Rendered as:
Unsafe: javascript:alert(1)Accessibility
Section titled “Accessibility”axe-core: 6 rules passed, 0 violations, 0 need manual review. Run at build time on the server-rendered HTML in jsdom. Colour contrast and layout rules need a browser and are covered by the Playwright axe scans of the reference frontend.