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

@lichens-innovation/react-markdown-composer

v1.6.1

Published

Reusable React component for composing markdown.

Readme

react-markdown-composer

Reusable React component for composing markdown.

standard-readme compliant TypeScript Node.js Vitest Bun

Installation

bun add @lichens-innovation/react-markdown-composer

Peer dependencies (install in the host app): antd, react, react-dom.

Usage

import { useState } from "react";
import { MarkdownComposer } from "@lichens-innovation/react-markdown-composer";

const MyComposerDialogBody = ({ inputData }) => {
  const [markdown, setMarkdown] = useState("markdown template with {{some expressions}} ");

  return (
    <MarkdownComposer
      inputData={inputData}
      markdown={markdown}
      onMarkdownChange={setMarkdown}
    />
  );
};

MarkdownComposer demo

Development

Install Bun 1.4+ (see packageManager in package.json) and uv (Python 3.11+, for local lint coaching), then:

bun install

bun install also installs habit-hooks automatically. If uv is not installed, install succeeds anyway — install uv and re-run bun install, or run uv tool install "habit-hooks[typescript]" manually.

bun start

Starts the Vite playground on http://localhost:3000 and opens MarkdownComposer.

All Scripts

| Command | Description | | ----------------------- | --------------------------------------------------------------------------------------------------- | | bun prepare | Installs husky git hooks, applies patch-package patches, installs habit-hooks (runs on bun install) | | bun habit:install | Installs habit-hooks for local lint coaching (runs via prepare on bun install; skipped in CI) | | bun clean:node | Removes node_modules directories and bun.lock file | | bun start | Starts the Vite playground (MarkdownComposer) | | bun generate:version | Writes version constants from package.json (optional local helper) | | bun typecheck | Checks TypeScript types without emitting files | | bun lint | Runs habit-hooks — linter findings as coaching guides | | bun lint:ci | Runs ESLint to check code quality | | bun lint:fix | Runs ESLint with --fix | | bun lint:package | Lints package.json via npm-package-json-lint | | bun lint:unused | Finds unused files, exports, and dependencies (via knip) | | bun format | Formats all files using Prettier according to .prettierrc rules | | bun format:check | Checks if files are formatted according to Prettier rules | | bun habit:hooks | Runs habit-hooks against the main branch (habit-hooks --branch main) | | bun habit:snoozed | Lists the currently snoozed habit-hooks findings (.habit-hooks/snooze.json) | | bun build | Cleans dist, then Vite library build (src/index.ts → dist/) | | bun test | Runs tests using Vitest | | bun test:coverage | Runs tests with a Vitest coverage report | | bun test:crap | Runs tests with coverage, then generates a CRAP score report (crap-report/) |

Project coding guidelines

Adhering to established coding guidelines is essential for developing efficient, maintainable, and scalable software. These guidelines promote consistency across codebases, making it easier for teams to collaborate and for new developers to understand existing code. By following standardized patterns, such as those outlined in the Coding guidelines, developers can reduce errors and enhance code readability.

Contributions

Contributions to the project are made by improving the current codebase and then creating a Pull Request. When the PR is merged into main, the CI pipeline runs automatically. semantic-release determines the next version from conventional commit messages, updates CHANGELOG.md and package.json, and publishes the new version — no manual version bump required.

Library semantic versioning

Versioning is automated by semantic-release using Conventional Commits. The release type is derived from commit message prefixes:

| Commit prefix | Release type | | ----------------------------- | ----------------------------------------------- | | fix: | PATCH — backward-compatible bug fix | | feat: | MINOR — new backward-compatible functionality | | feat!: / BREAKING CHANGE: | MAJOR — incompatible API change |

Follow Semantic Versioning (MAJOR.MINOR.PATCH) when writing commit messages — the tooling takes care of the rest. Commitlint requires a scope (e.g. feat(composer): add toolbar).

License

This project is licensed under the MIT License - see the LICENSE file for details.

References