Skip to content

Embed

Generated from front/ui/catalogue/examples/Embed.json

learning · static (no JavaScript) · no children. All components: component playground.

External media by URL (YouTube, Vimeo); other URLs become a link card.

Rendered from the example props below with the real component. Theme: coffee · oncall · nightsky · gravity · poland · ulam · platform · open on its own

{
"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

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-size

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:

  • /url unsafe or empty link

Rendered as:

Unsafe: javascript:alert(1)

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.