Open source · Angular 22 · React 19 · MIT

UI components, needlessly well engineered.

Accessible Angular components on native elements, styled by one framework-free stylesheet. All MIT, including what other libraries sell separately: a scheduler with resource timelines, and a data grid with grouping and Excel export.

Why it exists

  • No premium tier

    The scheduler’s resource timeline and repeating events, and the data grid’s grouping, tree data and Excel export, are MIT like everything else: no license key, no watermark. Moving from a paid library? Read the guides for FullCalendar and AG Grid.

  • Native elements first

    <button nuiButton> is a real button. Forms, keyboards and screen readers work because nothing is wrapped around it.

  • One stylesheet, any framework

    Components are plain CSS in cascade layers: Angular today, React for the scheduler and the data grid so far, plain HTML always.

  • Your CSS always wins

    Everything ships inside @layer nui, so your own styles override it without !important or specificity battles.

  • Accessible by construction

    Every color pair is checked against WCAG 2.2 AA when the palette is generated. Focus, forced colors and reduced motion are handled for you.

  • Needlessly customizable

    Springs, press effects, entrances, corner shapes, radius and density: one attribute for the whole app, or one input per component, on standard W3C design tokens.

  • Modern Angular

    Signal inputs, zoneless, server rendering and one entry point per component, so apps ship only what they import.

One command, then one import

Run ng add to install the package and import its stylesheet, then use components in any standalone component.

ng-add.sh
ng add @needless-ui/angular
usage.ts
import { Component } from '@angular/core';
import { NuiButton } from '@needless-ui/angular/button';

@Component({
selector: 'app-root',
imports: [NuiButton],
template: `<button nuiButton (click)="save()">Save changes</button>`,
})
export class App {
save() {}
}