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

@pollium/vyva-core

v0.3.0

Published

The Vyva content model for documents and decks, and the one renderer that turns it into HTML.

Readme

@pollium/vyva-core

The Vyva content model, and the one renderer that turns it into HTML. It has no dependency on React or Node, so the same code renders in the browser, on a server and inside an export.

npm install @pollium/vyva-core

The content

import type { Content, DocumentContent, DeckContent } from '@pollium/vyva-core/content';
  • A document is a page design and a list of blocks, each one an HTML fragment with an id: headings, paragraphs, lists, checklists, tables, code, images, equations and page breaks.
  • A deck has a format (16:9, 4:3, 1:1, a4-portrait, a4-landscape, or an exact { width, height }), a theme and slides. Each slide holds positioned elements: text, images, shapes, tables and code. deckSize(format) gives the size of any format.
  • A slide's background is a color, an image, or a page of a PDF: { type: 'pdf-page', fileId, page }. The renderer leaves a PDF page clear, because the host draws it under the elements; hasPdfPages(content) tells whether a deck has any.
  • An image or a PDF is referenced by its file id, a UUID the host gives it. The content never holds a URL.

The interfaces carry typia tags, so a host with typia can validate content from a client with typia.assert<Content>(body).

Rendering

import { renderDocument, renderSlide, CONTENT_CSS } from '@pollium/vyva-core/render';

const html = renderDocument(content, (fileId) => `/files/${fileId}`);

fileUrl turns a file id into the URL the HTML loads. Return null to leave the image out. CONTENT_CSS styles the result. Every class name starts with vy-.

Building content

| Module | What it does | |---|---| | @pollium/vyva-core/markdown-blocks | markdownToBlocks turns Markdown into document blocks. ![alt](asset:<fileId>) becomes an image | | @pollium/vyva-core/slide-layouts | layoutSlide builds a slide from a spec, such as a title, bullets, two columns, an image, a table or a quote | | @pollium/vyva-core/slide-relayout | relayoutSlide moves an existing slide into another layout | | @pollium/vyva-core/deck-theme | retheme and reformat change a deck's theme or format and adjust every slide | | @pollium/vyva-core/themes | The default deck theme and document design | | @pollium/vyva-core/code | Syntax highlighting for code elements, and code sizing | | @pollium/vyva-core/math | LaTeX between $…$ and $$…$$ rendered as MathML |