开源 · Angular 22 · React 19 · MIT

UI 组件,精心打磨到近乎多余。

基于原生元素的无障碍 Angular 组件,由一份不依赖框架的样式表提供样式。全部采用 MIT 许可证,连其他库单独收费的功能也包括在内:带资源时间轴的日程表,以及支持分组和 Excel 导出的数据表格。

为何而生

  • 没有付费版

    日程表的资源时间轴和重复日程,以及数据表格的分组、树形数据和 Excel 导出,都和其他部分一样采用 MIT 许可证:无需许可证密钥,也没有水印。正在从付费库迁移?请阅读 FullCalendar 和 AG Grid 的迁移指南。

  • 原生元素优先

    <button nuiButton> 就是一个真正的按钮。它外面没有包裹任何东西,所以表单、键盘和屏幕阅读器都能正常工作。

  • 一份样式表,适用任何框架

    组件就是放在级联层中的纯 CSS:现在支持 Angular,React 目前支持日程表和数据表格,纯 HTML 则始终可用。

  • 你的 CSS 永远优先

    所有样式都位于 @layer nui 中,因此你自己的样式无需 !important,也不用比拼优先级,就能直接覆盖它们。

  • 天生无障碍

    生成调色板时,每一组颜色搭配都会按照 WCAG 2.2 AA 进行校验。焦点、强制颜色模式和减弱动态效果也都已为你处理好。

  • 可定制到近乎多余

    弹簧、按压效果、入场动画、边角形状、圆角半径和密度:整个应用只需一个属性,单个组件也只需一个输入属性,全部基于标准的 W3C Design Token。

  • 现代 Angular

    Signal 输入属性、Zoneless、服务端渲染,且每个组件都有独立的入口点,应用只会打包实际导入的部分。

一条命令,再加一处导入

运行 ng add 安装软件包并导入样式表,然后就能在任意独立组件中使用这些组件了。

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() {}
}