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

@lnpg/sol

v1.3.0

Published

LNPG Sol — Bootstrap-foundation component library with admin and public layers, tree-shakable, vanilla TypeScript DOM factories.

Readme

@lnpg/sol

LNPG Sol is a framework-agnostic, Bootstrap-based component library and design foundation. Components use typed vanilla TypeScript DOM factories; applications can wrap them with Vue, React, or other frameworks.

The npm package is public for LNPG application installs. It is marked UNLICENSED and is not licensed for third-party use.

Install

Install Sol and its peer dependencies from npm:

npm install @lnpg/sol bootstrap bootstrap-icons

Live application demo

From this repository, run npm install once, then npm run dev. Open the URL printed by Vite (normally http://localhost:5173/). The internal demo is a working sample application: navigate the sidebar, search/filter/sort members, page through results, add or edit a member, confirm a status change, export CSV, and inspect dashboard, reports, settings and component patterns. Sample data stays in the browser tab and resets on reload.

Development mode imports Sol's TypeScript and SCSS source directly, so saving a component or style updates the demo without an npm publish or dist build. Run npm run dev -- --mode external for the separate public component showcase. Static demo builds still import the compiled package with npm run build.

Sol requires Bootstrap ^5.3.8 and Bootstrap Icons ^1.11.3 as peer dependencies.

Styles

Import styles once from your application entry point:

import '@lnpg/sol/styles';

Layer-specific styles are available from @lnpg/sol/styles/foundation, @lnpg/sol/styles/admin, and @lnpg/sol/styles/public.

Internal navbar

Mount the shared navbar into an application-owned element:

import { mountInternalNavbar } from '@lnpg/sol/ui-components/navbar';

const navbar = mountInternalNavbar(document.querySelector('#navbar')!, {
  appName: 'Orbit',
  appUrl: import.meta.env.VITE_ORBIT_URL,
  activeAppId: 'orbit',
  appOverrides: {
    orbit: { href: import.meta.env.VITE_ORBIT_URL },
    identity: { href: import.meta.env.VITE_IDENTITY_URL },
    telescope: { href: import.meta.env.VITE_TELESCOPE_URL },
    socium: { href: import.meta.env.VITE_SOCIUM_URL },
    nexus: { enabled: false },
  },
  search: {
    placeholder: 'Search Orbit',
    action: import.meta.env.VITE_ORBIT_SEARCH_URL,
    method: 'post',
  },
  account: {
    accountHref: import.meta.env.VITE_ACCOUNT_URL,
    securityHref: import.meta.env.VITE_SECURITY_URL,
    sessionsHref: import.meta.env.VITE_SESSIONS_URL,
    showWorkAccount: false,
    logoutHref: import.meta.env.VITE_LOGOUT_URL,
  },
});

// On teardown:
navbar.destroy();

The switcher ships Orbit, Identity, Telescope, Socium, and Nexus with PNG icons and descriptions, but no destination URLs. Use appOverrides to change any field by app ID, including enabled: false to hide Nexus; use apps to replace the entire menu with custom entries. Each app has reusable transparent <id>-white.png and <id>-black.png icons at @lnpg/sol/assets/apps/. The dark switcher uses white icons; set appSwitcherTheme: 'light' to use black icons on light tiles and white icons on highlighted tiles. Browser-facing environment values are public configuration, not secrets. Search submits via POST by default; supply search.action or use search.onSubmit for SPA navigation. Notifications stay hidden unless showNotifications is enabled. Account menu labels remain visible without URLs, but cannot navigate until the consumer supplies their destinations.

The Account menu includes Security and Sessions. Work Account remains visible by default; set account.showWorkAccount to false to remove its entire section.

See installation and configuration guide for style layers, consumer configuration, and additional exports.