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

@knowler/field-error-element

v0.0.1

Published

A field error element for displaying custom error messages that are associated with form controls.

Readme

A field error element

A work in progress. There be gaps and breaking changes in-bound.

A custom element that allows you to declaratively set custom error messages for a form control for its validation constraints.

Usage

Import and define the custom element with a name of your choosing:

import { FieldErrorElement } from "@knowler/field-error-element";

customElements.define("field-error", FieldErrorElement);

Use the element alongside your HTML. Where it’s placed is where it will be displayed.

<label for=email>Email</label>
<field-error for=email
	value-missing="An email address is required."
	type-mismatch="Provide a valid email address."
></field-error>
<input id=email type=email name=email required>

Use kebab-cased ValidityState constraints as attribtues to set corresponding messages for them.

Note that the element itself is not responsible for reporting the error messages. These show when there’s invalid fields on an attempted submit or when an author calls reportValidity() for the associated field. In both cases, it prevents the default validation popup from showing up.

Styling

A big gap here: there’s no custom state being set, so there’s no way of knowing when the control is showing a message.

Roadmap

  • Add custom states for styling. Also, maybe some default styles.
    • Perhaps an error icon something too which can be a shadow part.
  • Probably use aria-describedby for macOS VoiceOver and Windows Narrator support.
  • Consider allowing slotted content for server-side error messages.
    • This would be considered a default message which would be overriden by messages based on its active validity state.
  • Suppress titlish-tooltips-as-validation-messages in Edge and Safari.