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

@ofi-data-team/recitac

v1.0.0

Published

Embeddable bilingual ReciTAC knowledge-network visualization

Readme

ReciTAC browser library

ReciTAC renders one bilingual TCA knowledge network directly in a host page. The first release supports one <recitac-network> per page and does not use an iframe.

Webflow embed

Add an Embed element with a positive width and height. Pin both the package version and its matching published integrity value:

<style>
  recitac-network {
    display: block;
    width: 100%;
    height: 80vh;
    min-height: 560px;
    --recitac-font-family: "Neue Haas Grotesk Display", Arial, sans-serif;
  }
</style>

<recitac-network
  src="https://example.org/data/ReciTAC_data.json"
  language="en"
  focus-id="optional-stable-id"
></recitac-network>

<script
  defer
  src="https://cdn.jsdelivr.net/npm/@ofi-data-team/[email protected]/dist/recitac.min.js"
  integrity="sha384-RELEASE-VALUE"
  crossorigin="anonymous"
></script>

The npm package does not provide Neue Haas Grotesk Display font software. The host must separately license and load that webfont using the exact family name supplied by its licensed CSS. Without it, the component uses the readable Arial/system fallback.

src is required and must resolve to HTTP(S) JSON containing a nodes object, a links array, and a non-empty HTTP(S) metadata.imgBase. The data and images must permit browser CORS access. language accepts en or fr and otherwise uses English. focus-id is an optional stable entity ID; an unknown ID leaves the network usable. Changing src, or calling reload(), starts a fresh load.

The host owns the component size. Give it a positive width and height at every responsive breakpoint. Only one active component per document is supported; a second receives the local MULTIPLE_INSTANCES_UNSUPPORTED error.

Events and accessibility

The component reflects data-state="loading|ready|error" and emits bubbling recitac-ready and recitac-error events. Loading is announced as a polite status and expected failures appear as a local role="alert", leaving surrounding host controls usable. Keep the component in the normal reading order and do not remove visible focus styles or accessible names from its controls.

const network = document.querySelector("recitac-network")
network.addEventListener("recitac-ready", event => console.log(event.detail))
network.addEventListener("recitac-error", event => console.error(event.detail))

Troubleshooting and verification

  • A secure Webflow page must use HTTPS for the exact bundle, JSON, and image URLs.
  • Webflow CSP must allow the jsDelivr script and the configured data/image origins; those origins must also return compatible CORS headers.
  • A missing size produces CONTAINER_SIZE_INVALID; set an explicit height and reload.
  • A blocked/unreachable source produces FETCH_FAILED; malformed or incompatible JSON produces JSON_INVALID or DATASET_INVALID.
  • Host CSS must not deliberately target .recitac-root internals or use overriding inline/!important rules against them.

After publishing Webflow staging, verify the network and images render, the console is clean, English/French switching works, search and every filter work, and hover, selection, story details, links, legend, zoom, and pan work at desktop and touch widths. Confirm the generated page contains no iframe and surrounding links/forms/controls still work.

Upgrade and rollback

Never use latest, a tag, an omitted version, or a version range in production. For an upgrade, change the exact jsDelivr version and SRI value together on staging, repeat the verification above, then publish. Record the previous known-good pair. To roll back, restore that exact URL and matching SRI without changing the component markup or dataset.

Licensed under GPL-3.0-only. Visualization designed and developed by Nadieh Bremer.