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

@ripl/vue-charts

v1.4.0

Published

Declarative Vue 3 components and compositions for Ripl charts

Readme

@ripl/vue-charts

Declarative Vue 3 components for Ripl's 25 chart types.

Props are the chart's options, and changing one updates the chart in place rather than rebuilding it.

Installation

npm install @ripl/vue-charts

@ripl/vue and @ripl/charts arrive as dependencies. vue (3.5 or later) is a peer dependency.

Quick start

import {
    createRiplCharts,
} from '@ripl/vue-charts';

createApp(App).use(createRiplCharts()).mount('#app');

createRiplCharts() registers the core Ripl components too, so a chart can share a page, or even a context, with hand-drawn elements.

<template>
    <ripl-bar-chart
        :data="data"
        :series="series"
        key-by="month"
        title="Monthly breakdown"
        :legend="true"
        @barclick="onBarClick"
    />
</template>

Props are options

Every prop maps to a top-level chart option, the furniture included: axis, grid, legend, tooltip, crosshair, annotations, navigator, title, animation, theme and padding.

  • An unbound prop is never written, so the chart keeps its own default.
  • A bound object replaces the whole option. The merge is shallow and top-level, so :axis must be passed complete rather than partially.
  • Props are compared by identity, so hoist object and array bindings to a computed.

keyBy, not key

Vue reserves key as the vnode key, so a chart's key option is bound as key-by and renamed on the way in.

Events

Listener props come from the events each chart declares, so they match the imperative API exactly: @barclick, @segmententer, @nodeclick. A chart subscribes only to an event you actually bind.

Sharing a context

A chart builds its own scene and renderer, so it is a peer of <ripl-context> rather than something nested in a <ripl-scene>. Given one, it draws into it:

<template>
    <ripl-context style="width: 640px; height: 360px">
        <ripl-bar-chart :data="data" :series="series" key-by="month" />
    </ripl-context>
</template>

Unmounting then leaves the context alone; a standalone chart destroys the surface it made.

Compositions

import {
    useRiplChart,
} from '@ripl/vue-charts';

const chart = useRiplChart();

A template ref on any chart component resolves to the chart itself, which is how you reach the imperative APIs with no declarative equivalent: chart.navigator, and push() / clear() on a realtime chart.

Documentation

Full documentation lives at ripl.run.

License

MIT