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

@octanejs/dropzone

v0.0.16

Published

The exact react-dropzone 20.0.0 file-acquisition contract, ported to Octane with drag, click, paste, validation, async processing, and programmatic-open support.

Readme

@octanejs/dropzone

The exact [email protected] file-acquisition API, ported to Octane. It supports click and keyboard selection, drag and drop, paste, File System Access, accepted/rejected files, synchronous or asynchronous validators, superseding stale async work, and programmatic dialog opening. It never uploads files.

Installation

npm install @octanejs/dropzone
pnpm add @octanejs/dropzone
import { useDropzone } from '@octanejs/dropzone';

export function FilePicker() @{
  const dropzone = useDropzone({
    accept: { 'image/*': ['.png', '.jpg', '.jpeg'] },
    maxFiles: 3,
    onDropAccepted(files) {
      console.log(files.map((file) => file.name));
    },
  });

  <section {...dropzone.getRootProps()}>
    <input {...dropzone.getInputProps()} />
    <p>{dropzone.isProcessing ? 'Checking files…' : 'Drop images or choose files'}</p>
    <button
      type="button"
      onClick={(event) => {
        event.stopPropagation();
        dropzone.open();
      }}
    >Choose files</button>
  </section>
}

Migrate from React

Replace the package import and convert JSX/components to TSRX. The root export, default Dropzone component, useDropzone, ErrorCode, option names, callback payloads, getter contract, ref contract, and public types match the pinned upstream release.

- import { useDropzone } from 'react-dropzone';
+ import { useDropzone } from '@octanejs/dropzone';

The binding publishes only the root entry and ./package.json, matching upstream. It requires Node 22 or newer for tooling and an Octane application at runtime. Browser support follows the platform file, drag-and-drop, clipboard, and File System Access APIs used by the selected options; File System Access is feature-detected and falls back to the hidden file input where appropriate.

File names, paths, MIME types, and file contents can be sensitive. Validate again at the trust boundary, do not infer safety from extensions or browser MIME metadata, and upload only after explicit user intent. See UPSTREAM.md for the immutable source and artifact provenance.