Иллюстрация

связывает подпись с тем, что она описывает, чего абзац под картинкой не делает. Передайте src для обычного случая или потомков для всего остального, что достойно подписи.

Простая иллюстрация

Логотип sitelo
Логотип в том виде, в каком он появляется в верхней панели.
figure({
  src: '/logo.svg',
  alt: 'Логотип sitelo',
  caption: 'Логотип в том виде, в каком он появляется в верхней панели.',
  style: '--su-figure-bg: var(--su-surface-2)',
})

С удержанным соотношением

ratio оборачивает картинку в aspectRatio(), поэтому подпись никогда не прыгает вниз, когда картинка загрузится.

ratio: 16 / 9
ratio: 1 / 1
grid({ min: '13rem' },
  figure({ src: '/logo.svg', alt: '', ratio: '16 / 9', caption: 'ratio: 16 / 9' }),
  figure({ src: '/logo.svg', alt: '', ratio: '1 / 1', caption: 'ratio: 1 / 1' }),
)

Подпись к чему-то другому

Без src содержимым иллюстрации становятся потомки.

ФайлРазмер
index.html4,1 кБ
404.html860 Б
sitemap.xml155 Б
Таблица 1 — вывод сборки по умолчанию.
figure({ caption: 'Таблица 1 — вывод сборки по умолчанию.' },
  table({
    dense: true,
    columns: [{ key: 'file', header: 'Файл' }, { key: 'size', header: 'Размер', align: 'end' }],
    rows: [
      { file: 'index.html', size: '4,1 кБ' },
      { file: '404.html', size: '860 Б' },
      { file: 'sitemap.xml', size: '155 Б' },
    ],
  }),
)

Код с подписью

Обратите внимание на проп text у code(): во всей этой библиотеке потомки рендерятся как HTML, поэтому пример с тегами нужно экранировать, иначе браузер соберёт его вместо того, чтобы показать.

export default () => "<h1>Привет</h1>"
Целая страница sitelo.
figure({ caption: 'Целая страница sitelo.' },
  code({ text: 'export default () => "<h1>Привет</h1>"' }),
)

Альтернативный текст

Атрибут alt пишется всегда — пустым, если вы ничего не дали: картинку вовсе без alt объявляют по имени файла, а это хуже тишины. Подпись его не заменяет: подпись читают все, а alt описывает картинку тому, кто её не видит.

Когда подпись уже говорит всё, что говорит картинка, правильный ответ — alt: ''.

В тексте

Иллюстрации, приходящие из рендерера Markdown, уже оформляет prose(). Этот компонент — для иллюстраций, которые вы собираете сами.

Пропсы

ПропТипПо умолчаниюОписание
srcstring—Источник картинки. Опустите и используйте потомков.
altstring''Альтернативный текст. Пишется всегда, даже пустым.
captionChild—Тот самый figcaption.
ratiostring—Держит место до загрузки картинки.