Open source · Angular 22 · MIT

UI components, needlessly well engineered.

Needless UI styles native elements with one framework-free stylesheet and W3C design tokens. Its Angular directives add behavior from Angular Aria, so every component is accessible from the first render.

Why it exists

  • 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 next, 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.

  • Standard design tokens

    W3C DTCG token files compile to CSS custom properties with light, dark and nested themes.

  • Modern Angular

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

Two imports and you’re done

Add the package, import the stylesheet once, then use components in any standalone component.

install.sh
pnpm add @needless-ui/angular @angular/aria @angular/cdk
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() {}
}