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

@stll/folio-react

v0.30.0

Published

React editor for folio: a Word-document (.docx) editor for the browser, built on @stll/folio-core and ProseMirror.

Readme

@stll/folio-react

A Word-document editor for the browser. It opens a real .docx, lets you edit it, and writes a real .docx back — preserving pagination, tables, headers and footers, tracked changes, and footnotes.

The React editor is one layer on top of @stll/folio-core, the headless OOXML parser, document model, and page-layout engine.

Part of stella, an open-source legal workspace.

Install

bun add @stll/folio-react react@^19.2.0 react-dom@^19.2.0 use-intl@^4.0.0 \
  prosemirror-commands@^1.7.1 prosemirror-dropcursor@^1.8.2 prosemirror-gapcursor@^1.4.1 prosemirror-history@^1.5.0 \
  prosemirror-inputrules@^1.5.0 prosemirror-keymap@^1.2.3 prosemirror-model@^1.25.9 prosemirror-state@^1.4.4 \
  prosemirror-tables@^1.8.5 prosemirror-transform@^1.12.0 prosemirror-view@^1.42.6 y-prosemirror@^1.3.7 \
  y-protocols@^1.0.6 yjs@^13.6.31

ProseMirror and Yjs packages are required peers, including the collaboration packages y-prosemirror and y-protocols. Install one compatible copy of each in the host application so schemas, plugins, editor states, and collaborative documents share the same runtime. The command above includes the complete editor peer closure.

@stll/folio-core is installed automatically as a dependency.

Usage

import { DocxEditor } from "@stll/folio-react";
import "@stll/folio-react/editor.css";

export function Editor({ docx }: { docx: ArrayBuffer }) {
  return <DocxEditor documentBuffer={docx} onSave={(out) => download(out)} />;
}

The editor renders to the DOM; under SSR, load it from a client-only/dynamic import.

Read-only review views

<DocxEditor
  documentBuffer={docx}
  readOnly
  reviewDisplayMode="final"
  showCommentHighlights={false}
/>

reviewDisplayMode accepts all-markup (the default), final (all pending changes accepted for display), or original (all pending changes rejected for display). It controls the displayed text, formatting, numbering, table rows, pagination and search. The controlled prop updates the view without reparsing. Omit it to let the editor's review selector control the view.

Projected views (final, original, and Simple Markup in the review selector) are read-only: typing and replacement are refused. Switch to all-markup to edit. ref.current.getReadOnlyReason() returns review-display-mode, host-read-only, viewing-mode, or null when editing is allowed. onReadonlyEditAttempt(reason) receives the exported EditorReadOnlyReason when a user attempts an edit.

showCommentHighlights defaults to true and independently hides comment highlights in all-markup. Highlights are always hidden in final and original. Neither prop changes the document, revisions or comments: saving or exporting DOCX preserves the same authored document in every view. The Vue DocxEditor exposes the same props. ReviewDisplayMode is exported by both adapters and folio-core; core's reviewDisplayModeToDisplayMode selects the existing markupView layout configuration (final uses no-markup).

Exports

| Import | What it is | | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------- | | @stll/folio-react | the React editor and its components | | @stll/folio-react/editor.css | the single bundled stylesheet — import once; it @imports the document fonts from @fontsource/* (installed as deps), so no external network requests |

For headless, framework-neutral use (OOXML parsing, the document model, the layout engine, DOCX ↔ Markdown), depend on @stll/folio-core directly.

Peer dependencies

react ^19.2 · react-dom ^19.2 · use-intl >=4, plus the ProseMirror and Yjs peers listed in the installation command above.

Keyboard shortcuts default to the editor root. Set keyboardShortcuts="document" only when this editor should own shortcuts across the host page.

Acknowledgements

folio began as a private fork of Eigenpal's docx-editor by Jedr Blaszyk. The code has since been extended (mostly to match the needs of stella). After the upstream repository was taken down, we're publishing folio in case the fork is useful to others as well. The original license and copyright are preserved in NOTICE.md.

License

Apache-2.0

See document search for highlighting, navigation, and result callbacks.