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

@bene-npm/shield-ui

v2.1.1

Published

Security-themed React component library for dashboards, scanners, and threat visualization

Readme

@bene-npm/shield-ui

Security-themed React component library — dashboards, scanners, threat visualization.

Live Demo & Docs · npm · GitHub


Install

npm install @bene-npm/shield-ui

React 18 or 19. Zero dependencies. No CSS imports required.


Quick Start

import { ShieldProvider, SeverityBadge, SecurityScore, ThreatCard } from "@bene-npm/shield-ui";

export default function Dashboard() {
  return (
    <ShieldProvider theme="dark">
      <SeverityBadge level="CRITICAL" pulse />
      <SecurityScore score={84} label="Overall" />
      <ThreatCard
        id="CVE-2024-38816"
        severity="HIGH"
        title="Path Traversal"
        pkg="spring-webmvc"
        version="6.1.12"
        fixed="6.1.13"
      />
    </ShieldProvider>
  );
}

ShieldProvider is optional — components fall back to the dark theme without it.


Themes

<ShieldProvider theme="dark">        {/* default — deep black, cyan accent */}
<ShieldProvider theme="hacker">      {/* green-on-black terminal */}
<ShieldProvider theme="corporate">   {/* light, professional */}
<ShieldProvider theme="midnight">    {/* deep navy, gold accent — new in v2.1 */}

Custom theme — pass any Theme object and it merges over the dark base:

<ShieldProvider theme={{ accent: "#a855f7", bg: "#0f0a1e" }}>

Components

27 components across 7 categories — full prop tables and live demos at bene-ui.vercel.app · /docs.

Display & Badges

| Component | Description | |-----------|-------------| | SeverityBadge | Threat level badge with pulse animation and count bubble | | ShieldBadge | Trust/verification status badge (verified/warning/compromised) | | CveTag | Compact inline CVE reference tag with severity dot | | ComplianceBadge | SOC2, GDPR, HIPAA, ISO27001, PCI DSS, NIST status badges | | IPReputationBadge | Threat intel badge — risk score, categories, country, ASN |

Scanning & Progress

| Component | Description | |-----------|-------------| | SecurityScore | Animated circular gauge for security posture (0–100) | | ScanProgress | Progress bar with scanning shimmer and status states | | StatusIndicator | Pulsing status dot for system health monitoring | | MetricCard | KPI card with animated counter, trend arrow, and sparkline | | VulnDonutChart | Animated SVG donut chart for severity breakdown |

Threat & Intelligence

| Component | Description | |-----------|-------------| | ThreatCard | Expandable CVE card with package, version, and fix info | | AlertBanner | Dismissible severity-aware notification banner | | SecurityTimeline | Chronological security event feed with severity dots | | RiskMatrix | 5×5 likelihood/impact risk prioritization grid | | AttackChain | MITRE ATT&CK-style kill chain visualization | | ThreatRadar | Spider/radar chart for security posture across dimensions |

Terminal & Code

| Component | Description | |-----------|-------------| | TerminalOutput | macOS-style terminal with optional typing animation | | SecretCodeBlock | Code viewer with automatic secret detection (AWS keys, JWTs…) | | PasswordStrength | Live entropy-based password strength meter | | ThreatHunterQuery | KQL / Sigma / YARA query viewer with MITRE technique mapping |

Data Visualization

| Component | Description | |-----------|-------------| | HeatmapGrid | 2D intensity heatmap for vulnerability density | | DataFlowLine | Animated encrypted/threat data flow visualization | | PortScanMap | Visual port scan results with well-known service labels |

Network & Infrastructure

| Component | Description | |-----------|-------------| | CertificateCard | SSL/TLS cert info with live expiry countdown | | FirewallRule | Visual firewall/ACL rule table |

UX

| Component | Description | |-----------|-------------| | LogStream | Live scrolling log viewer with filter, pause/resume, severity colors | | CommandPalette | Keyboard-searchable modal (↑↓ Enter Esc) for security-ops dashboards |


Theme API

import { useTheme, useSev, getSevColor, useAnimVal, useReducedMotion } from "@bene-npm/shield-ui";

// Access the active theme object
const t = useTheme();

// Get severity color as a string
const color = useSev("CRITICAL");         // hook — use in component body
const color = getSevColor(t, "HIGH");     // plain function — safe in .map()

// Animate a number from 0 → target over duration (ms)
const animated = useAnimVal(score, 700);

// Respect prefers-reduced-motion
const reduced = useReducedMotion();

TypeScript

import type {
  Theme, ThemeName,
  SeverityLevel,   // "CRITICAL" | "HIGH" | "MEDIUM" | "LOW" | "INFO"
  LogLine,         // { id?, time?, level?, source?, message }
  PaletteCommand,  // { id, label, action, description?, icon?, group?, keywords? }
  RadarAxis,       // { label, value, max? }
  FWRule,          // firewall rule shape
  QueryLanguage,   // "KQL" | "SPL" | "YARA" | "Sigma" | "SQL" | "EQL" | "Lucene"
  ThreatCategory,  // "malware" | "spam" | "botnet" | "phishing" | "scanner" | "proxy" | "tor"
  TerminalLine, ComplianceStandard, PortEntry,
} from "@bene-npm/shield-ui";

Changelog

v2.1.0

  • 8 new components: LogStream, CertificateCard, VulnDonutChart, CommandPalette, ThreatRadar, IPReputationBadge, FirewallRule, ThreatHunterQuery
  • New theme: midnight (deep navy + gold accent)
  • Custom theme support: ShieldProvider now accepts a full or partial Theme object
  • New hook: useReducedMotion() — respects prefers-reduced-motion

v2.0.0

  • 9 new components: MetricCard, SecurityTimeline, RiskMatrix, AttackChain, ComplianceBadge, HeatmapGrid, DataFlowLine, PortScanMap, CveTag
  • 3-theme system: dark / hacker / corporate
  • ShieldProvider context and useTheme() hook

v1.0.0

  • Initial release — 10 core components

License

MIT © Benedikt Pankratz