Chat Response

Per-element markdown-рендер ответа ассистента 1:1 с Claude — serif-проза, ссылки, GitHub-alerts, блоки кода, таблицы, чек-листы, картинки-слайдеры, kbd, details, сноски. Стриминг через streamdown.

Установка

Требует пакет streamdown — движок инкрементального рендера markdown (shiki-подсветка, GFM, math, mermaid) по мере поступления токенов.

Использование

Принимает текст markdown как children. Каждый элемент рендерится своим renderer-ом через components-карту Streamdown, чтобы повторить разметку Claude 1:1, но на DS-токенах: serif-проза font-serif text-base leading-[1.65], заголовки font-semibold, ссылки-info, alert-варианты на семантических токенах.

Декаплинг от приложения

Никаких @/lib/*, lightbox, toast или union-типов message-part. Сайд-эффекты — через опциональные колбэки:

Остальные пропсы (shikiTheme, remarkPlugins, rehypePlugins, controls, className, …) пробрасываются в Streamdown.

Поведение при стриминге

Компонент мемоизирован: ре-рендер только когда меняется children или isAnimating. Безопасно прокидывать частичные строки "Hello, I a""Hello, I am""Hello, I am Claude." — рендер инкрементальный, без потери layout.

Состояния

Поддерживаемая разметка

  • Заголовки h1/h2text-lg font-semibold, h3text-base font-semibold.
  • Ссылкиtext-info с подчёркиванием decoration-info/30, стрелка ArrowUpRight; auto-link срезает протокол; якорные ссылки #id скроллят плавно.
  • GitHub-alerts[!NOTE], [!TIP], [!IMPORTANT], [!WARNING], [!CAUTION] с иконкой, eyebrow-лейблом и семантической рамкой/заливкой.
  • Блоки кода — единый блок с подписью языка (алиасы js → javascript), shiki-подсветка от Streamdown, кнопка копирования reveal-on-hover.
  • Инлайн-код — мономоноширинный с мягкой подложкой, без кнопки копирования (1:1 с Claude).
  • Таблицы — обёртка rounded-xl border bg-card, thead bg-muted/60, зебра чётных строк, row-stagger анимация появления.
  • Чек-листы (- [ ] / - [x]) — интерактивные: клик переключает состояние, отмеченные перечёркнуты.
  • Картинки — карточка/слайдер с overlay-кнопкой скачивания и кликом в lightbox.
  • <kbd>, <details>/<summary>, сноски (GFM), <hr>, математика ($$…$$).

Кастомизация

Базовая типографика идёт на DS-токенах. Дополнительная стилизация — через className; токены кода/таблиц/alerts можно переопределить точечно:

Oracul DS

Built for the future of AI-driven interfaces.