Skip to content
Get started

Media

gallery and video-embed — pictures and film, without the weight.

A grid of images, each openable full size.

gallery

alt describes the image and is what a screen reader reads; caption is shown and is editorial. They are different jobs — "Lisbon, 2024" is a caption, not a description of a photograph.

video-embed

A self-hosted file or a YouTube/Vimeo URL.

video-embed

See it in ninety seconds

Nothing loads until you press play.

Nothing loads until the visitor presses play. A poster image and a play button is all that ships — which matters most for third-party embeds, where the alternative is loading a player and its trackers on every page view whether or not anyone watches.

Choosing between them

You wantUse
A video the visitor chooses to watchvideo-embed
Video as a backdrop with copy over itmedia-panel with video:
Several images to browsegallery
One image supporting an argumentzigzag or showcase
Images inside documentation<Screenshot> in MDX

Assets

Everything lives under assets/ in the content root and is referenced by a path relative to it:

yaml
image: assets/gallery/office.png

zellij sync-assets copies the directory into public/_zellij/assets/, which is what turns that authored path into a served one. Subfolders are yours to organise.