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

ngx-comps

v0.1.0

Published

Modern Angular component library with powerful data grid and comprehensive UI components

Readme

ngx-comps

Modern Angular component library with comprehensive UI components and a powerful enterprise-grade data grid.

npm version License

💎 Free & Premium Tiers

ngx-comps offers a freemium model with core features free forever and premium features available with a commercial license.

🆓 Free Tier (Always Free)

  • ✅ Button component (7 variants, 3 sizes, all features)
  • ✅ Input component (validation, form integration, all features)
  • ✅ Select component (single/multi-select, searchable, all features)
  • ✅ Basic Grid (sorting, basic rendering, events)
  • ✅ Complete theming system
  • ✅ Full TypeScript support
  • ✅ Community support

💼 Premium Tier (Commercial License Required)

Premium features will include:

  • 🔒 Advanced Grid filtering
  • 🔒 Grid pagination
  • 🔒 Grid grouping & aggregation
  • 🔒 Grid virtual scrolling (optimized)
  • 🔒 Grid row selection (multi-select)
  • 🔒 Grid export (CSV, Excel)
  • 🔒 Priority support
  • 🔒 Custom feature requests

📢 Note: Premium features are coming soon. Current v0.1.0 includes all features in the free tier.

Features

Modern Angular 21+ - Built with the latest Angular features including signals 🎨 Comprehensive Components - Button, Input, Select, Grid, and more 📊 Powerful Data Grid - Enterprise-grade data grid with advanced features 🎯 Signals-First - Leverages Angular signals for reactive state management 💅 Themeable - CSS custom properties for easy customization ♿ Accessible - WCAG 2.1 AA compliant components 📦 Tree-shakeable - Optimized bundle size with standalone components 🚀 Production Ready - Thoroughly tested and documented

Installation

npm install ngx-comps

Quick Start

Import Components

import { Component } from '@angular/core';
import { ButtonComponent, InputComponent, SelectComponent } from 'ngx-comps';

@Component({
  selector: 'app-root',
  imports: [ButtonComponent, InputComponent, SelectComponent],
  template: `
    <button comps-button variant="primary">Click Me</button>
    
    <comps-input 
      label="Email" 
      type="email"
      placeholder="Enter your email"
    />
    
    <comps-select
      label="Role"
      [options]="roleOptions"
      [searchable]="true"
    />
  `
})
export class AppComponent {
  roleOptions = [
    { label: 'Admin', value: 'admin' },
    { label: 'User', value: 'user' }
  ];
}

Import Styles

In your styles.scss:

@import 'ngx-comps/styles/theme';

Or in angular.json:

{
  "styles": [
    "node_modules/ngx-comps/styles/theme.css",
    "src/styles.scss"
  ]
}

Components

Button

  • 7 variants: primary, secondary, success, warning, danger, ghost, link
  • 3 sizes: sm, md, lg
  • Loading state with spinner
  • Disabled state
  • Icon support
<button comps-button variant="primary" size="md">
  Save Changes
</button>

<button comps-button variant="danger" [loading]="isSubmitting">
  Delete
</button>

Input

  • Multiple types: text, email, password, number, etc.
  • Form integration with ControlValueAccessor
  • Validation with error display
  • Prefix/suffix icon support
  • 3 sizes
<comps-input
  label="Username"
  type="text"
  placeholder="Enter username"
  hint="Must be unique"
  [error]="hasError"
  errorMessage="Username is required"
  formControlName="username"
/>

Select

  • Single and multi-select modes
  • Searchable dropdown
  • Clearable option
  • Form integration
  • Disabled options
  • 3 sizes
<comps-select
  label="Country"
  [options]="countries"
  [searchable]="true"
  [clearable]="true"
  formControlName="country"
/>

<comps-select
  label="Tags"
  [options]="tags"
  [multiple]="true"
  formControlName="tags"
/>

Data Grid

Enterprise-grade data grid with powerful features:

  • Sortable columns
  • Filtering (coming soon)
  • Pagination (coming soon)
  • Row selection (coming soon)
  • Custom cell renderers
  • FormGroup integration
  • Virtual scrolling (in progress)
import { GridComponent, GridOptions, GridColumn } from 'ngx-comps';

columns: GridColumn[] = [
  { field: 'name', headerName: 'Name', sortable: true },
  { field: 'email', headerName: 'Email', sortable: true },
  { field: 'role', headerName: 'Role' }
];

gridOptions: GridOptions = {
  rowData: this.users,
  columnDefs: this.columns
};
<comps-grid
  [options]="gridOptions"
  (rowClicked)="onRowClick($event)"
  (cellClicked)="onCellClick($event)"
/>

Theming

Default Theme

ngx-comps comes with a professional default theme using CSS custom properties.

Custom Theme

Override CSS variables in your styles:

:root {
  --comps-primary_blue: #your-color;
  --comps-secondary_blue: #your-color;
  // ... more variables
}

Available CSS Variables

  • Colors: 25+ color variables
  • Spacing: xs, sm, md, lg, xl, 2xl
  • Typography: Font sizes, weights, line heights
  • Border radius: sm, md, lg, xl, full
  • Shadows: sm, md, lg, xl
  • Transitions: fast, base, slow

Form Integration

All form components implement ControlValueAccessor for seamless integration with Angular Forms:

import { FormGroup, FormControl, ReactiveFormsModule } from '@angular/forms';

myForm = new FormGroup({
  username: new FormControl(''),
  email: new FormControl(''),
  role: new FormControl(''),
  status: new FormControl([])
});
<form [formGroup]="myForm">
  <comps-input formControlName="username" label="Username" />
  <comps-input formControlName="email" label="Email" type="email" />
  <comps-select formControlName="role" [options]="roles" />
  <comps-select formControlName="status" [options]="statuses" [multiple]="true" />
</form>

Browser Support

  • Chrome (latest)
  • Firefox (latest)
  • Safari (latest)
  • Edge (latest)
  • Mobile browsers

Requirements

  • Angular 21.0.0 or higher
  • TypeScript 5.9 or higher
  • Node.js 18+ or 20+

Roadmap

v0.2.0 (Coming Soon)

  • [ ] Modal component
  • [ ] Card component
  • [ ] Tabs component
  • [ ] Grid filtering
  • [ ] Grid pagination

v0.3.0

  • [ ] Grid row selection
  • [ ] Grid virtual scrolling (complete)
  • [ ] Tooltip component
  • [ ] Dropdown component

v0.4.0

  • [ ] Date picker
  • [ ] Tree component
  • [ ] Accordion
  • [ ] Advanced grid features (grouping, aggregation)

📄 License

ngx-comps is dual-licensed:

Free Tier - Always Free ✅

The free tier (current v0.1.0 components) can be used in any project (personal or commercial) at no cost.

Includes:

  • Button, Input, Select components (all features)
  • Basic Grid (sorting, basic rendering)
  • Theming system

Premium Tier - Commercial License Required 💼

Premium features (when released) require a commercial license for production use.

See LICENSE file for complete terms.

Pricing (Coming Soon)

  • Free: $0 - Core components, basic grid
  • Pro: (TBD) - All premium grid features
  • Enterprise: (TBD) - Priority support, custom features

For licensing questions: (contact info coming soon)

Contributing

Contributions to the free tier are welcome! Please feel free to submit a Pull Request.

Support

  • 📧 General inquiries: (coming soon)

  • 🐛 Issues: Report on npm or GitHub (when repo created)

  • 💬 Community: (coming soon)

  • 📧 Email: [email protected]

  • 🐛 Issues: https://github.com/yourusername/ngx-comps/issues

  • 📖 Documentation: https://github.com/yourusername/ngx-comps

Changelog

v0.1.0 (Initial Release)

  • ✅ Button component (7 variants, 3 sizes)
  • ✅ Input component (form integration, validation)
  • ✅ Select component (single/multi, searchable)
  • ✅ Grid component (basic features, sorting)
  • ✅ Modern theming system
  • ✅ Signals-based architecture
  • ✅ ViewEncapsulation for global theming
  • ✅ Production-ready styling