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

cartflow-js

v1.0.0

Published

Lightweight vanilla JS animation library for add-to-cart effects.

Readme

CartFlowJS

CartFlowJS is an enhanced, lightweight, and pure JavaScript version of the original CartFlow.
It provides a smooth "fly-to-cart" animation effect with flexible customization.


Features

  • 💡 Clone an "image" from the "button" position and then it will fly to the "cart" element
  • 🚀 Pure Vanilla JavaScript – no external dependency required
  • 🎬 Optional GSAP support for ultra-smooth animations
  • 🖼️ Customizable flying image size (setWidthImage, setHeightImage)
  • 💫 Multiple cart effects: pop or shake
  • 🎨 Option to keep or remove image class attributes (keepClassAttributes)
  • 🪄 Flexible callbacks: onComplete, onCartEffect
  • ⚡ Clean modular structure, easy to integrate into any project
  • 🧱 No DOM hierarchy required - CartFlow JS works with independent elements across the page. You can place the cart in the header, the button inside a product card, and the product image anywhere else — it will still work perfectly.

Installation

Using CDN

<script src="https://cdn.jsdelivr.net/gh/tranvnthuong/cartflow-js/src/cartflow.js"></script>

Usage Example

<img id="product-img" src="product.jpg" alt="Product">
<button id="add-to-cart">Add to Cart</button>
<div id="cart-icon"></div>

<script>
  const cartFlow = new CartFlow({
    cartSelector: '#cart-icon',
    imageSelector: '#product-img',
    buttonSelector: '#add-to-cart',
    setWidthImage: 200,
    setHeightImage: 200,
    onComplete: () => console.log('Animation completed!'),
    onCartEffect: (cart) => console.log('Cart effect triggered:', cart)
  });

  document.querySelector('#add-to-cart').addEventListener('click', () => {
    cartFlow.startAnimation();
  });
</script>

Options

| Option | Default | Description | |-------|-------|-------| | cartSelector | 'cart' | CSS selector or HTMLElement of the cart icon | | imageSelector | 'img' | Product image element | | buttonSelector | 'button' | Button that triggers the animation | | animationDuration | 1000 | Duration of the animation in milliseconds | | easing | 'ease-in-out' | Animation easing function | | keepClassAttributes | false | Whether to keep class attributes on the cloned image | | useCustomImageSize | true | Use custom image dimensions for the animation | | setWidthImage | 250 | Width of the flying image | | setHeightImage | 250 | Height of the flying image | | cartEffect | 'pop' | Cart effect after animation (pop or shake) | | onComplete | null | Callback executed after animation completes | | onCartEffect | null | Callback executed after cart effect completes |


Technical Notes

  • If GSAP is available, it will be used automatically for animation.
  • Otherwise, the library falls back to native Web Animation API or CSS transitions.
  • The library is completely standalone and can run in any browser without frameworks.

Demo