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

@camp2gether/c2g-ui

v0.32.2

Published

This project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 20.3.0.

Readme

C2gUi

This project was generated using Angular CLI version 20.3.0.

Code scaffolding

Angular CLI includes powerful code scaffolding tools. To generate a new component, run:

ng generate component component-name

For a complete list of available schematics (such as components, directives, or pipes), run:

ng generate --help

Building

To build the library, run:

ng build c2g-ui

This command will compile your project, and the build artifacts will be placed in the dist/ directory.

Publishing

Not by hand. Publishing happens through a push to main.

.github/workflows/publish.yml runs on every push to main, compares the version in projects/c2g-ui/package.json with the one on npm and publishes when they differ. If they are the same, the run does nothing — so a push without a version bump is harmless.

The way to a new version:

  1. Raise the version in projects/c2g-ui/package.json.
  2. Run the same build beforehand that the CI runs:
    npm run build
    Ten guards hang on it, among them check:stories (one Storybook story per component). It publishes nothing.
  3. Push to main. The CI does the rest.

Afterwards pull the dependency in the web repository up to the new version and run npm install.

Why not locally

The CI authenticates over trusted publishing (OIDC) — GitHub gives the job a short-lived token, and npm recognises the repository and the workflow file by it. There is deliberately no NPM_TOKEN secret; if one were set, npm would prefer it and skip OIDC.

That is why it does not work locally: your own npm login has nothing to do with this chain. A personal token can publish if the account has rights to the package — but then past the CI, without the version comparison, and the next CI run fails because the version already exists.

On 2026-08-04 this still said NPM_TOKEN=<token> npm run release. The attempt ended with E404 PUT /@camp2gether%2fc2g-ui — npm's phrasing for "not permitted" — because the local token no longer held. The instructions were the fault, not the token.

scripts/release-flow.mjs with npm run release and npm run release:check is deleted. Its one own check — a story per component — now runs as check:stories in npm run build and therefore in the CI, where it never ran before.

What consumers have to bring

The library translates its texts over ngx-translate — it therefore depends on a TranslateService in the application. Without one, even creating a component that uses the translate pipe fails (among others the whole packing list family).

For tests the library brings provideC2gTesting() along; besides the zoneless change detection it also provides a TranslateService.

The peer dependencies name everything that is imported. leaflet, echarts, ngx-echarts and ngx-lottie are marked optional: they are needed only if you use maps, charts or animations.

Running unit tests

To execute unit tests with the Karma test runner, use the following command:

ng test

Running end-to-end tests

For end-to-end (e2e) testing, run:

ng e2e

Angular CLI does not come with an end-to-end testing framework by default. You can choose one that suits your needs.

Storybook Quality Gates

All Wave 1 and future components must meet the criteria defined in:

STORYBOOK_QUALITY_GATES.md

This document covers:

  • Required story variants per component type
  • Requirement that every component ships with at least one Storybook story before release
  • Angular 20 signal-based API conventions
  • Accessibility (A11y) checklist
  • Visual consistency and design token rules
  • i18n requirements
  • Branch and delivery policy
  • Copy-paste DoD checklist for new component tickets

Additional Resources

For more information on using the Angular CLI, including detailed command references, visit the Angular CLI Overview and Command Reference page.