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 🙏

© 2025 – Pkg Stats / Ryan Hefner

@enzsft/react-cookie-consents

v1.0.0

Published

Handle cookie consents with ease. 😲

Downloads

79

Readme

Building cookie banners should be easy. We've written @enzsft/react-cookie-consents to ensure you can get up and running as quickly as possible. It provides a convenient API to write and read cookie consents.

@enzsft/react-cookie-consents uses React Hooks so requires at least [email protected]

Motivation 🧐

The React ecosystem was lacking a hooks based cookie consents API when this library was first required.

Getting started 🏎

1. Install the package:

yarn add @enzsft/react-cookie-consents

# or

npm install @enzsft/react-cookie-consents

2. Create a cookie banner

The following example renders a cookie banner but only if consent has not already been given.

import { React } from "react";
import ReactDOM from "react-dom";
import {
  CookieConsentsProvider,
  useCookieConsents,
} from "@enzsft/react-cookie-consents";

const CookieBanner = () => {
  const cookieConsents = useCookieConsents();

  if (cookieConsents.get().length > 0) {
    return null;
  }

  return (
    <>
      <span>
        We use cookies to help give you the best experience on our site. By
        continuing you agree to our use of cookies.
      </span>
      <button type="button" onClick={() => cookieConsents.add("analytics")}>
        Accept and close
      </button>
    </>
  );
};

const App = () => {
  return (
    <CookieConsentsProvider cookieName="cookieConsents" expiryInDays={365}>
      <CookieBanner />
    </CookieConsentsProvider>
  );
};

ReactDOM.render(<App />, document.getElementById("root"));

API 🌳

CookieConsentsProvider

Configure the cookie name and when it will expire.

<CookieConsentsProvider cookieName="cookieConsents" expiryInDays={365}>
  {children}
</CookieConsentsProvider>

useCookieConsents

React Hook that returns a cookie consent object to read/write cookie consents. Components that use this must be nested within a CookieConsentsProvider as it uses React Context.

Cookie consents are stores in a cookie. When you add, remove or clear consents the cookie is updated.

const Comp = () => {
  const cookieConsents = useCookieConsents();

  // Get all cookie consents
  const allConsents = cookieConsents.get();

  // Add a new consent, silently ignores duplicates
  cookieConsents.add("consent name");

  // Remove a consent
  cookieConsents.remove("consent name");

  // Remove all consents
  cookieConsents.clear();
};

Built with TypeScript with 💖

TypeScript type definitions are bundled in with the module. No need to install an additional module for type definitions.