npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@bndynet/ichat-messages

v3.3.1

Published

Lit 3 chat message UI as Web Components: Markdown + syntax highlighting, pluggable fenced-block renderers, collapsible reasoning, and streaming previews (bring your own composer).

Readme

@bndynet/ichat-messages

Core chat message UI as Lit Web Components. Markdown rendering with syntax highlighting, pluggable fenced-block renderers, collapsible reasoning, streaming previews, and tool-call / to-do support.

For long histories, virtual scrolling defaults to 'auto' — it automatically engages when the message count exceeds 500. Set config.virtualScroll = true for always-on or false for always-off. The regular keyed list is the automatic fallback when the virtualizer cannot load.

While virtual scrolling is active, off-screen rows are not in the DOM. Browser find-in-page, selection spanning the whole history, and printing therefore cover only the rendered range, and custom parts must keep durable state in message data rather than in private DOM state. Set config.virtualScroll = false if those matter more than large-history performance.

Install

npm install @bndynet/ichat-messages

Components

| Component | Tag | | --------------- | -------------------- | | ChatMessages | <i-chat-messages> | | ChatMessage | <i-chat-message> | | ChatPartHost | <i-chat-part> | | ChatTextPart | <i-chat-text> | | ChatToolCall | <i-chat-tool-call> | | ChatTodo | <i-chat-todo> | | ChatReasoning | <i-chat-reasoning> | | ChatSpinner | <i-chat-spinner> |

Extension APIs

  • registerCodeRenderer(renderer) — custom fenced-code-block renderers; output is sanitised by default, with trusted: true as an explicit opt-in for audited renderers that need rich output during streaming
  • registerMarkdownPlugin(plugin) — markdown-it plugins with auto CSS injection
  • registerPartRenderer(renderer) — custom parts[] type renderers (e.g. file, source, x-*)

All three global registries support runtime registration. New extensions affect subsequently added or updated content without automatically refreshing existing rendered content. Same-object registration is idempotent, while a different object with the same name/id warns and keeps the first registration.

Dependencies

All runtime dependencies are auto-installed:

| Package | Purpose | | -------------- | -------------------------- | | lit | Web Component framework | | markdown-it | Markdown rendering | | dompurify | HTML sanitization | | highlight.js | Syntax highlighting | | morphdom | DOM patching for streaming |

License

MIT