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

@signature-kit/react

v0.1.0

Published

Headless React hooks for browser A1 certificate loading, A1 PDF signing, external builder state, and PDF object URLs.

Downloads

62

Readme

@signature-kit/react

Headless React hooks for browser A1 certificate loading, A1 PDF signing, external builder state, and PDF object URLs.

The package is intentionally hooks-only. It does not publish UI components, storage, fetch/tRPC glue, toasts, modals, rendering adapters, or react-pdf bindings. Apps own UI code directly or install the docs-hosted shadcn registry components into their own source tree.

Install

bun add @signature-kit/react @signature-kit/a1 @signature-kit/pdf effect react react-dom

React is a peer dependency. effect is a direct runtime dependency used by the hook actions.

Install the docs-hosted shadcn dialog into your app when you want owned UI:

npx shadcn@latest add https://signaturekit.dev/r/signature-dialog.json

Migration note: components moved out of the npm package and into the registry. Replace old @signature-kit/react/components imports with app-owned registry files.

Public surface

  • @signature-kit/react/a1useA1Certificate, useA1Signer, getLoadedA1CertificateProfile, and clear actions.
  • @signature-kit/react/browser-pdfusePdfObjectUrl(bytes) with object URL cleanup.
  • @signature-kit/react/buildercreateSyncStore, useSyncStore, and other tiny external-store helpers for headless builder state.
  • @signature-kit/react/config — hook input schemas, signer row types, and certificate state types.

Certificate persistence is not included. If an app remembers a password or encrypted PFX bytes, it owns that storage policy and passes fresh inputs back to the hooks.

Example

import { useA1Certificate, useA1Signer } from "@signature-kit/react/a1";

type Props = {
  readonly pdf: Uint8Array;
  readonly pfx: Uint8Array;
  readonly password: string;
};

export function SignWithA1({ pdf, pfx, password }: Props) {
  const certificate = useA1Certificate();
  const signer = useA1Signer();

  return (
    <button
      type="button"
      disabled={certificate.status === "loading" || signer.busy}
      onClick={async () => {
        const loaded = await certificate.load(pfx, password);
        if (!loaded.ok) return;

        await signer.sign({
          documents: [{ id: "contract", name: "contract.pdf", pdf }],
          credentials: { profile: loaded.profile },
          signing: { policy: "pades-icp-brasil" },
        });
      }}
    >
      Sign PDF
    </button>
  );
}

Errors and i18n

Hook failures return typed SignatureKitError, PdfError, or CmsError values in the hook outcome/state. Applications can render localized copy through @signature-kit/i18n with the relevant package catalogs.

Docs: https://signaturekit.dev/en-US/docs/a1-signing/browser-pdf-flow and https://signaturekit.dev/en-US/docs/recipes/react-components.

License

MIT. See LICENSE.