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!importantor 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.
pnpm add @needless-ui/angular @angular/aria @angular/cdkimport { 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() {}
}