Media
| Component | File | Notes |
|---|---|---|
| Image | image-block.tsx | Plain src (text URL), alt, caption, loading (lazy/eager). Does not open the media library; see below for exactly why. |
| Media Figure | media-figure-block.tsx | Built via createMediaFigureBlock from @pantheon-systems/p1-media; opens the full P1 media library/picker, with cropping and CDN delivery. |
Use Media Figure for any real content image. Both blocks sit in the same “Media” category in the Puck sidebar, which makes it easy to reach for the wrong one. Image is a “paste an arbitrary external URL” escape hatch (its default value is an Unsplash stock photo, not a P1-hosted asset); Media Figure is the one backed by the managed library. See Media Library → Why the picker doesn’t show on every image field for exactly why Image never gets picker behavior, even though the media plugin is active in this project’s editor.
Media Figure is backed by P1’s managed media plugin (max 10MB upload,
PNG/JPEG/GIF/WebP/AVIF only; no SVG, blocked for XSS reasons), and delivers images
through a transform endpoint (width, height, format, quality, crop params)
rather than serving raw uploads. See Media Library for the full
picture: transforms, alt-text/WebP requirements, and limits.
The Image block is genuinely useful for its actual purpose (an ad hoc external URL: a third-party badge, a logo hosted elsewhere), just not as a substitute for the media library on content that should live in it.